原文:为什么重复值高的字段不能建索引(比如性别字段等)

结论 以innodb为例 a 非聚簇索引存储了对主键的引用,如果select字段不在非聚簇索引内,就需要跳到主键索引 上图中从右边的索引树跳到左边的索引树 ,再获取select字段值 b 如果非聚簇索引值重复率高,那么查询时就会大量出现上图中从右边跳到左边的情况,导致整个流程很慢 c 如果where值重复率高的字段,select用了limit,只查较少数据,也就是跳的次数很少的情况下,还是可以建 ...

2018-06-28 11:05 0 5096 推荐指数:

查看详情

为什么说性别字段不适合做索引

关于区分度不高的字段,比如性别,比如状态字段,是否应该建索引? 只有2种取值的字段,建了索引数据库也不一定会用,只会白白增加索引维护的额外开销,因为索引也是需要存储的,所以插入和更新的写入操作,同时需要插入和更新你这个字段索引的.所以说,唯一性太差的字段不需要创建索引,即便用于where ...

Fri Jun 12 06:40:00 CST 2020 0 4068
一个只有0和1的字段,到底要不要索引

关于数据库索引的所有文章,都会告诉你不要对这种字段索引。 但这些文章不会告诉你的一个事实是: 如果表里面这个字段分布极度不均匀的情况下,而且你需要查询分布较少的记录的话,索引就非常有用了 举个例子,假设表中有一千万条记录,某个状态为0的记录总数大概会有100条,那么你想查询状态 ...

Tue Aug 14 18:28:00 CST 2018 25 4926
创建表的性别字段使用ENUM遇到的问题

问题描述:     创建了一个学生表(student),其中的性别字段语句如下:ALTER TABLE student ADD sex ENUM('男','女','保密') NOT NULL DEFAULT '男';    2.报错:ERROR 1291 (HY000 ...

Sat Dec 08 00:03:00 CST 2018 0 1712
【数据库】- 一个只有0和1的字段,到底要不要索引

关于数据库索引的所有文章,都会告诉你不要对这种字段索引。 但这些文章不会告诉你的一个事实是: 如果表里面这个字段分布极度不均匀的情况下,而且你需要查询分布较少的记录的话,索引就非常有用了 举个例子,假设表中有一千万条记录,某个状态为0的记录总数大概会有100条,那么你想查询状态 ...

Wed Aug 15 21:14:00 CST 2018 0 2040
分区依据字段要不要再索引

分区依据字段要不要再索引呢? 要的。 虽然表已经根据此字段分区,但这不能等同于索引。分了区,只能说该字段为某个的记录会在某个分区里面,但不是索引,还要一顿好找。 有时候,主键不等于分区依据列,这时候主键又想聚集索引的话,那么必须包含分区依据列,搞成复合主键 ...

Tue Feb 28 19:12:00 CST 2017 0 4243
SQL查询一个表中类别字段中Max()最大对应的记录

问题是: 数据库有一个表 code,里面有个点击量字段click_num和一个类别字段kind以及其它信息字段, 现在要搜出每个类别中点击量最大的那条记录,如果是10个类别,那么结果应该是10条记录, 如果最大点击量有两个相同的只要一条。 经过N次搜索,N次检测网上的解决SQL语句,终于 ...

Wed Apr 11 19:29:00 CST 2012 2 6821
SQL查询一个表中类别字段中Max()最大对应的记录

数据库有一个表 Employee,里面有个点击量字段Salary和一个类别字段DepartmentId以及其它信息字段, 现在要搜出每个类别中Salary最大的那条记录,如果是10个类别,那么结果应该是10条记录, 如果最大Salary有两个相同的则全部保留: 更高效,很好理解 ...

Tue Jan 30 23:33:00 CST 2018 0 32457
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM