我读过左侧的 MySQL 索引,所以如果我跨两列创建索引field1
,field2
我可以这样做:
SELECT .. FROM .. WHERE `field1` = 'x' AND `field2` = 'y';
和
SELECT .. FROM .. WHERE `field1` = 'x';
两者都可以吗?我问是因为有时它会按两列查询,有时只按第一列查询。或者对于这两种情况有两个不同的指数会更好吗?
我读过左侧的 MySQL 索引,所以如果我跨两列创建索引field1
,field2
我可以这样做:
SELECT .. FROM .. WHERE `field1` = 'x' AND `field2` = 'y';
和
SELECT .. FROM .. WHERE `field1` = 'x';
两者都可以吗?我问是因为有时它会按两列查询,有时只按第一列查询。或者对于这两种情况有两个不同的指数会更好吗?
西蒙坦普尔,你是对的。两个查询都是对的。只要你不跑步:
SELECT .. FROM .. WHERE `field2` = 'y' AND `field1` = 'x';
或者
SELECT .. FROM .. WHERE `field2` = 'y';
保持组合索引应该不是问题。
是的,双列索引可以使两个查询受益。无需创建两个索引。
事实上,工具pt-duplicate-key-checker会将单列索引报告为冗余。