是否可以使用主键以外的列作为索引,这样做有什么不利之处?
答案 0 :(得分:2)
绝对。这有助于SELECT ... WHERE
条件不是您的主键。但是,要小心,不要索引太多 - 只索引你需要的东西。
答案 1 :(得分:2)
除了主键之外,我的许多表都有辅助索引。您可以为每个表创建多个索引,但在MySQL中,给定查询中每个表只使用一个索引。
您应该创建哪些索引?这取决于您的查询。请参阅本周我做的演示文稿MENTOR Your Indexes。
添加更多索引会逐渐增加插入/更新/删除的开销。更改数据时,RDBMS必须保持索引同步。但是,正确的索引几乎总是能够为您的选择查询提供如此多的好处,以至于它们不仅可以证明维护它们的开销。
使用多个索引会有很大的性能影响吗?
在“SQL的艺术”一书中,作者对此进行了测试,发现在添加多个索引时会有更大的性能损失。但有趣的是,它没有线性上升。第二,第三等索引的额外开销在大致对数曲线中下降。也就是说,两个索引的价格不是一个索引的两倍。四个索引的价格不是两个索引的两倍。
答案 2 :(得分:1)
你可以选择替代方案
MySQL索引的优点 一般来说,MySQL索引到数据库有三个优点:
MySQL索引的缺点 当在列上创建索引时,MySQL还会创建一个单独的文件,该文件已排序,并且只包含您有兴趣排序的字段。
首先,索引会占用磁盘空间。通常空间使用率并不重要,但由于在每个可能的组合中的每个列上创建索引,索引文件将比数据文件快得多。在表具有较大的表大小的情况下,索引文件可以达到操作系统的最大文件大小。
其次,索引会降低编写查询的速度,例如 INSERT,UPDATE和DELETE 。因为MySQL必须在内部维护实际数据文件中插入行的“指针”,所以在上述写入查询的情况下需要支付性能价格,因为每次更改记录时,必须更新索引。但是,您可以以不会导致性能显着下降的方式编写查询。