1

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

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

4

2 回答 2

2

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

于 2012-10-15T16:11:10.330 回答
1

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

于 2012-10-15T16:42:54.027 回答