暂无图片
MySQL 建立联合索引时,应该把低基数的列放在前还是把高基数的列放在前?
我来答
分享
黎琛
2021-12-13
MySQL 建立联合索引时,应该把低基数的列放在前还是把高基数的列放在前?

MySQL 建立联合索引时,应该把低基数的列放在前还是把高基数的列放在前?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
冯睿

联合(组合)索引不一定由基数的高低来决定谁是前导列。经常进行等值查询,且选择性较好的列可以作为前导列。以下列出几个组合索引使用的场景总结:

1.组合索引适合用在单独查询时返回记录很多,组合查询返回记录很少的情况。

2.组合查询的组合顺序,要全面考虑单列查询情况。
比如创建一个组合索引 create index idx_object_id on t(object_id,object_type);
谓词限制查询的时候,select * from t where object_id=10; 会使用这个索引,
组合索引应该把经常使用的列放在前面。
第一个查询条件该用哪个字段还是需要综合考虑系统所有查询来进行设计。

3.仅等值无范围查询时,组合索引顺序不影响性能。

4.组合索引最佳顺序一般是将列等值查询的列置前。

暂无图片 评论
暂无图片 有用 1
打赏 0
暂无图片
黎琛
题主
2021-12-13
谢谢
回答交流
Markdown


请输入正文
提交