关于sql是否能使用索引的场景疑问

oBandari 2018-02-27 11:52:53
select * from table a where a = ? and b =? and c = ?

建立如下索引
A a,c建立复合索引
B b建立单独索引
C c建立单独索引
D b,c分别建立单独索引
E b、c建立复合索引

请问那些选项能必用到索引
...全文
710 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
大眼鱼叔叔 2018-03-06
  • 打赏
  • 举报
回复
没有什么必定会用到索引的。
minsic78 2018-02-27
  • 打赏
  • 举报
回复
理论上全部选项都有可能
minsic78 2018-02-27
  • 打赏
  • 举报
回复
引用 8 楼 oBandari 的回复:
换种说法。。。哪种是应该会的,不要考虑数据量很小或者统计信息什么的,按照理论来说。。。
不考虑统计信息数据量那么多不行,这些就是理论,数据量数据分布是最容易影响CBO的因素,而实际上因为环境不同,比如统计信息还有可能不准确,即使准确的情况下,COST计算公式可能还会出幺蛾子等等……更说不好了。 理论上说,你举的几个索引的例子,都有可能用到,也都有可能用不到。
卖水果的net 2018-02-27
  • 打赏
  • 举报
回复
引用 8 楼 oBandari 的回复:
换种说法。。。哪种是应该会的,不要考虑数据量很小或者统计信息什么的,按照理论来说。。。
如果同一时间,只有一个索引存在,那么这些索引都会用到。 如果,存在着多个索引,参考 6 # 意见。
oBandari 2018-02-27
  • 打赏
  • 举报
回复
换种说法。。。哪种是应该会的,不要考虑数据量很小或者统计信息什么的,按照理论来说。。。
minsic78 2018-02-27
  • 打赏
  • 举报
回复
引用 2 楼 oBandari 的回复:
那些是必定会的
永远不要说100%
liu志坚 2018-02-27
  • 打赏
  • 举报
回复
select floor(count(distinct b)/count(*) *100) from a; 用这个查下3个字段的 可选择性,越大越接近100 越适合建索引
oBandari 2018-02-27
  • 打赏
  • 举报
回复
数据量比较大,比如在1000w,统计信息也准确,在之前重新收集过,这些前提条件下,那些会用到索引
卖水果的net 2018-02-27
  • 打赏
  • 举报
回复
没有必用,只能可能 。如果统计信息不准确,可能都用不到。
liu志坚 2018-02-27
  • 打赏
  • 举报
回复
这个得看数据分布情况及数据量了。如果只有几条数据,就算都建上索引,估计也是走全表扫描的
oBandari 2018-02-27
  • 打赏
  • 举报
回复
那些是必定会的

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧