是否有“过度索引”数据库表这样的事情?

时间:2018-05-29 01:36:46

标签: mysql sql

我正在使用MySQL数据库上的新表编写新功能。通过从一开始索引列(我将在WHERE查询中使用SELECT)得到性能上升,还是应该等到我的表达到相当大的值才开始编制索引? / p>

4 个答案:

答案 0 :(得分:3)

如果您最终需要索引,您也可以使用表创建它们。这确实会减慢插入速度,但如果您需要它们,它们也可能存在。如果您知道正确答案,为什么还要等待慢查询呢?

反对将它们立即置于其中的一个论点是,实际的查询将通知索引策略。你似乎对使用的内容非常了解。

确认索引会快速执行某些操作(尤其是select s)。但是,它们会使其他操作变慢(尤其是insertupdatedelete)。因此,您应该对所进行的索引进行深思熟虑。

答案 1 :(得分:1)

来自this related post

比你需要的还多一个索引太多了。少了一点。

  

我已经尝试过搜索索引太多的情况了   问题,并没有真正找到任何东西

如果你的插入太慢,你知道你有太多的东西,用于阅读的索引并没有足够的速度来弥补它。

答案 2 :(得分:1)

当您插入,更新,删除表时,索引也需要更新。

请参阅此Article about indexing

答案 3 :(得分:1)

是的,由于索引,插入和更新可能会变慢。但是,在我的实践中,这不是一个普遍的问题。您只想添加您知道将需要的索引。在解决新问题时,请等待添加其他索引。需要考虑的一件事是:“如果”索引被遗忘,不需要并且实际上导致难以追踪的性能问题会怎么样。在找到问题索引之后,开发人员必须花费额外的时间来确定在应用程序的其他部分中是否确实需要索引。至于等待添加索引直到表达到一定大小。我会严重怀疑会给你带来任何性能,如果确实如此,我会质疑系统设计。