index(element1),
index(element2)
它使用了很多
空间小于unique
key(element1,element2)
?unique
key(element1,element2)
确保了这一点
那些没有重复
2行是相同的。这是
正确的吗?答案 0 :(得分:3)
如果您有INDEX(A)
,INDEX(B)
和INDEX(A,B)
,则INDEX(A)
是多余的。算了吧
但INDEX(A,B)
不包含仅在B上搜索的查询,您需要INDEX(B)
。
您可以论证INDEX(A)
和INDEX(B)
一起可以使用MySQL的INDEX MERGE
来构建INDEX(A,B)
。这使您可以选择
INDEX(A,B)
和INDEX(B)
INDEX(A)
和INDEX(B)
解决方案2将占用更少的磁盘空间,这是事实。但请阅读关于INDEX MERGE的Very Nice MySQLPerformanceBlog article,得出这个结论:
总结:使用多列索引 如果您使用AND,通常是最好的主意 在where子句中的这些列之间。 索引合并确实有助于提高性能 它远远没有结合的表现 在这种情况下索引。万一你是 在列之间使用OR - 单个 索引需要列索引 合并工作和组合索引 不能用于此类查询。