关于 Mysql 的复合唯一索引和普通索引

2017-03-15 11:05:33 +08:00
 AnonymousAccout
如果 a 列和 b 列加上了复合唯一索性,发现在用 a 列筛选数据的时候并不会用到 index scan ,是因为我加索引的姿势有问题吗,另外如果在复合索引的基础上再给 a 列加上普通索引,会出现什么问题呢
3529 次点击
所在节点    MySQL
4 条回复
flniu
2017-03-15 13:00:53 +08:00
一般地说,如果现有索引键顺序是 (a, b),再单独给 (a) 加索引没有意义。

不会用到 index scan ,可能跟查询的选择度有关,也可能跟 sql 的写法有关。
allenhu
2017-03-15 13:53:06 +08:00
不是加了索引就一定会用得到,看下高性能 MySQL 吧
devforma
2017-03-15 14:02:31 +08:00
a 列的区分度不高?统计下 count(distinct(a))/count(*)
AnonymousAccout
2017-03-15 14:07:32 +08:00
@flniu
a 列为 varchar 格式 sql 语句为筛选重复数据 group by a 之后用 having count > 1 来获取结果

@allenhu 谢谢推荐这本书 我对索引相关的是不怎么了解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/347568

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX