【问题标题】:Multiple indexes on the same table同一张表上的多个索引
【发布时间】:2012-10-16 00:42:54
【问题描述】:

我有一个具有以下架构的表:

CREATE TABLE IF NOT EXISTS `feeds` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `external_id` varchar(255) DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `notes` text,
  `image_id` int(11) DEFAULT NULL,
  `location_id` int(11) DEFAULT NULL,
   PRIMARY KEY (`id`),
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9046 ;

我正在为external_idlocation_id 创建索引,它们旨在分别用于影响表的不同查询。我知道每次添加、更新或删除记录时,MySQL 都必须重建索引。我想不通的是,如果更新此表中记录的name 字段会导致重建其中一个或两个索引。另外,我想知道,这两个独立的索引可以存在于这个表上,而不会对彼此的性能产生负面影响吗?感谢您的宝贵时间。

【问题讨论】:

    标签: mysql indexing schema


    【解决方案1】:

    索引不是“重建”的,而是更新的。更改未编制索引的列中的数据不应导致任何重新编制索引活动。

    【讨论】:

    • 这仍然意味着每次插入此表时都必须重新写入索引?有没有很好的资源可以解释这种类型的特定索引内容?谢谢你的帮助,塔德曼。
    【解决方案2】:

    您正在使用的 MySQL 存储引擎 MyISAM 将在每次更新行时更新索引。这意味着一个表的索引越多,从该表中插入、更新或删除行所花费的时间就越多。但是查询应该运行得更快。您可能希望对查询计划使用 EXPLAIN。

    【讨论】:

      猜你喜欢
      • 2013-07-02
      • 1970-01-01
      • 2023-03-30
      • 2015-05-18
      • 2014-07-11
      • 2015-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多