同一个表上有多个索引

时间:2012-10-15 16:08:34

标签: mysql indexing schema

我有一个包含以下架构的表:

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字段是否会导致重建其中一个或两个索引。另外,我想知道,这两个单独的索引可以存在于这个表上,而不会对彼此的性能产生负面影响吗?谢谢你的时间。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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