求问,oracle count查询速度问题,奇怪~

wsmh3333 2020-07-27 06:49:48
我做了两个表,A和B。各有4W条数据,(两个表关联,一一对应的)
A表主要字段:id(主键),show_date(时间字段,字符串,建立索引)
B表主要字段:id(主键),a_id(与A表id关联),show_date(时间字段,字符串,建立索引,与A表数据相同)。

第一个实验:

SELECT COUNT (A.id)
FROM A,B
WHERE
A..show_date LIKE '2020%'
AND B.a_id = A.id;

查询时间1000ms。


第二个实验:

SELECT COUNT (A.id)
FROM A,B
WHERE
B..show_date LIKE '2020%'
AND B.a_id = A.id;

查询时间200ms。


第三个实验:
把A标的id主键约束去掉

SELECT COUNT (A.id)
FROM A,B
WHERE
A..show_date LIKE '2020%'
AND B.a_id = A.id;

查询时间1000ms。

不懂是什么原因,有没有大神能给解惑 orz...
...全文
334 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
AHUA1001 2020-09-10
  • 打赏
  • 举报
回复
这几个查询里,无论是哪个表的id字段,是否主键对整个查询没有任何影响。
COUNT里的字段,和LIKE '2020%'用到的字段,如果来源自一个表,效率要比来自不同表效率高。
miqi_oracle 2020-08-03
  • 打赏
  • 举报
回复
你第三次查询应该直接重用了第一次的查询结果,因为SQL代码是完全一致的,而且估计没有物理读。不是真正的对照实验说明不了问题
riven2011 2020-07-28
  • 打赏
  • 举报
回复
看一下执行计划和告知一下各个sql的值
wsmh3333 2020-07-27
  • 打赏
  • 举报
回复
第一个实验查询时间写错了,应该是10000ms。 两个表用主键关联,查询比不用主键关联慢10倍,不知道什么原因。

17,090

社区成员

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

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