我有一个包含3个索引列的表,让我们说col1, col2, col3
它们都是int
我的朋友说,如果column2的数据真实性较低(我的意思是它只有12,13,14而其他列都有随机数),那么为WHERE
子句设置条件会更快首先在该列上,因为mysql将首先从该点开始填充数据!
所以基本上他说第二个更快
select * from my_table where col1=1 and col2=2 and col3=3
select * from my_table where col2=2 and col1=1 and col3=3
是真的吗?我无法找到关于这个主题的任何阅读材料。
答案 0 :(得分:1)
虽然"真实"是一个应用于数据集的术语,它与数据库无关。我想你在谈论基数。
您在查询中声明谓词的顺序根本没有影响有关优化程序如何解析查询的顺序。您可以使用' explain'。
轻松自行测试索引中的列的顺序对性能有很大影响