对于表格中我只有SELECT
行,
它有3列[A, B, C]
。
我可以创建其中一个INDEXES
ALTER TABLE `table` ADD INDEX `A_B` (`A', `B`),ADD INDEX `B_C` (`B`, `C`);
OR
ALTER TABLE `table` ADD UNIQUE INDEX `A_B_C` (`A`, `B`, `C`),ADD INDEX `B_C` (`B`, `C`);
两者都以相同的速度工作,并且在EXPLAIN
中具有相同的结果。
我如何决定选择什么?
正常一个是4列,唯一一个是5列以防止重复,
但我SELECT
只是table
,那么使用普通会更好吗?或者使用唯一赢得了不同之处?
答案 0 :(得分:2)
在索引中包含更多列会有轻微的开销。
但是,我更喜欢唯一索引,因为它还确保了唯一性 - 也就是说,它强制执行您想要的表的属性。
请注意,如果您已将三个列定义为unique
,则无需对其进行单独索引。
我应该补充一点,如果查询中的所有条件都是相等条件,那么一个唯一索引就足够了。