社区
疑难问题
帖子详情
选择性低但经常出现在where条件中的字段到底要不要建索引?
Powertion
2017-04-27 06:57:27
选择性低(指字段值种类比较少,比如性别字段只有男、女)
但经常出现在where条件中的字段到底建不建索引?
疑惑
...全文
1866
7
打赏
收藏
选择性低但经常出现在where条件中的字段到底要不要建索引?
选择性低(指字段值种类比较少,比如性别字段只有男、女) 但经常出现在where条件中的字段到底建不建索引? 疑惑
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gentleman♥️
2019-02-22
打赏
举报
回复
不太建议建,索引同样会占用硬盘空间的,数据量很大的时候,也是很恐怖的,再从另外一个方面说下 我的观点,这是因为这样的数据会分散在几乎所有的数据页中,这样的话,其实就是要把所有的数据页都加载到内存中了,这样的话,如果走索引,也是同样要加载所有的数据页到内存中,那索引这个步骤不就是多余了吗,要知道,索引中存在的数据,是在每一个个数据页中的,一个数据页会存有相应索引范围的一批数据的,而数据页是存放在硬盘上的
中国风
2017-04-28
打赏
举报
回复
不建议建,意义不大
当数据达到一定值时,都会走表扫描,是否走索引要看男/女在表占用的比例
在SQL2005时计算选择性的比例为 满足条件的行数/总行数<=0.7181,会走索引,其它会走表扫描,需要考虑特殊情况比如表数据量小<64K,SQL2012之后的版本是用列存储计算大小方式又有所不同
参照选择性就行了,有兴趣可以自己去不同版本中去测试,意义不大,掌握大概就行了
Powertion
2017-04-28
打赏
举报
回复
sqlserver文档说: 设计索引时,应考虑以下查询准则: 为经常用于查询中的谓词和联接条件的所有列创建非聚集索引。 又说: 在列中检查数据分布。通常情况下,为包含很少唯一值的列创建索引或在这样的列上执行联接将导致长时间运行的查询。 有一种说法(非官方),通过建立提高选择性的组合索引
卖水果的net
2017-04-28
打赏
举报
回复
这种情况,应该和其他的查询条件用到的字段,建立联合索引,而不是建立单列索引; 比如这样的查询比较多: select * from t where crdate > '2017-01-01' and sexid = '男' 可以建立如下索引: create index ix_t on t(crdate, sexid)
Powertion
2017-04-27
打赏
举报
回复
谢回答,我有几个字段长期固定要与另外一张表做关联,其中有两个字段的选择性相当低,基本上就是五五开了,是否也适用这种情况不用建索引?怎么总感觉关联字段都要建上索引呢
专注or全面
2017-04-27
打赏
举报
回复
1
看情况,举个例子,如果仅仅是男女,数据55开的,或者是只有1,2,3三种状态的且相对平均分布的,这种情况下索引是没用的(用不到的) 如果可以根据筛选条件过滤出来一个小的结果集,当然可以建索引 比如表中状态位有1,2,3,4,5,6,7,8,9等等,3,4,5,6,7,8,9占据了大部分数据,1,2只有少部分数据,当然可以在这个字段上建索引 对于3,4,5,6,7,8,9的查询可能不适用与索引查询,但是对于1,2就适合索引查找,那么此时建立个索引页无可厚非。
专注or全面
2017-04-27
打赏
举报
回复
看情况,举个例子,如果仅仅是男女,数据55开的,或者是只有1,2,3三种状态的,正常情况下是没用的 如果可以根据筛选条件过滤出来一个小的结果集,当然可以建索引 比如表中状态位有1,2,3,4,5,6,7,8,9等等,3,4,5,6,7,8,9占据了大部分数据,1,2只有少部分数据,当然可以在这个字段上建索引 对于3,4,5,6,7,8,9的查询可能不适用与索引查询,但是对于1,2就适合索引查找,那么此时建立个索引页无可厚非。
哪些
字段
适合
建
立
索引
?如何
建
立
索引
本文详细阐述了数据库设计
中
建
立
索引
的原则,包括主键、高频连接
字段
、Where子句常用
字段
、高
选择性
字段
及小
字段
的
索引
策略。同时,文章提供了复合
索引
的
建
立指导,并介绍了MySQL
中
添加各种类型
索引
的方法。
索引
加在什么
字段
会提高查询速度
本文介绍了数据库
索引
的最佳实践,重点分析了应在哪些
字段
上创
建
索引
以提升查询性能。核心包括查询
条件
、连接、排序和分组
字段
的应用场景,并强调高
选择性
字段
和复合
索引
的重要性。同时指出
低
区分度、大文本及频繁更新
字段
需谨慎
建
索引
,结合执行计划分析确保
索引
有效使用。
命
中
索引
一定能提高查询速度吗?
本文结合项目优化实例,探讨
索引
对查询性能的影响。
索引
虽能避免全表扫描,但命
中
索引
不一定提升查询速度,如多表查询、
索引
选择性
低
、更新维护成本高、
索引
过多等情况。在简单查询、高
选择性
字段
、选择适当
索引
类型时,
索引
能提高查询速度。
Mysql选择合适的
字段
创
建
索引
本文围绕Mysql选择合适的
字段
创
建
索引
展开,介绍了考虑
字段
选择性
、优先选查询
条件
字段
、考虑排序分组及连接操作
字段
等方法,还提及考虑
字段
更新频率、类型大小,使用复合
索引
、避免冗余
索引
、考虑覆盖
索引
,以及定期分析和优化
索引
。
where查询
条件
的
字段
顺序打乱会影响命
中
索引
吗?
文章探讨了where
条件
字段
顺序是否影响MySQL查询
索引
的使用,实验证明Mysql查询优化器会自动调整顺序,单列和多列联合
索引
的实验结果表明,当联合
索引
列完全匹配查询
条件
或遵循最左前缀原则时,查询顺序才影响
索引
利用。
疑难问题
22,296
社区成员
121,728
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章