索引,为什么不只是索引所有内容以及何时使用索引?

jol*_*olt 7 mysql database indexing performance

索引用于快速查找具有特定列值的行.如果没有索引,MySQL必须从第一行开始,然后读取整个表以查找相关行.

说我们心爱的MySQL手册.

在这种情况下,为什么不只是索引每一列?

既然我觉得它会对性能产生更大的影响,那么我们何时应该使用索引/索引的最佳实践

提前致谢!

Joa*_*uer 13

创建索引总是需要付出代价:表上的索引越多,修改该表的成本就越高(即插入,更新和删除需要更长的时间).

反过来,可以使用索引的查询会更快.这是一个经典的权衡.在大多数表中,少量常用索引值得花费,因为查询经常发生(或者它们的性能比修改性能重要得多).

另一方面,如果你有一种经常更新的日志表,但很少查询(例如在发生灾难性故障的情况下),那么添加索引会增加很大的成本并提供很少的优势.

另外:索引是否有用取决于要执行的确切查询.您可能有索引跨越每列,但查询不能使用它,因为索引顺序错误,信息错误或格式错误.所以并非所有索引都能帮助所有查询