我有一个包含以下架构的表:
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_id
和location_id
创建索引,它们将分别用于影响表格的不同查询。据我所知,每次添加,更新或删除记录时,MySQL都必须重建索引。我无法弄清楚的是,更新此表中记录的name
字段是否会导致重建其中一个或两个索引。另外,我想知道,这两个单独的索引可以存在于这个表上,而不会对彼此的性能产生负面影响吗?谢谢你的时间。
答案 0 :(得分:2)
索引不是“重建”,而是更新。更改未编制索引的列中的数据不应导致任何重新索引活动。
答案 1 :(得分:1)
MyISAM,您正在使用的MySQL存储引擎,每次更新行时都会更新索引。意味着表具有的索引越多,从该表插入,更新或删除行所花费的时间就越多。但查询应该运行得更快。您可能希望将EXPLAIN用于查询计划。