【发布时间】:2019-03-07 10:08:27
【问题描述】:
我在创建小表时测试了这个编码 SQL,它有 4 行数据,我得到了快速查询,但是当我更改为真表很长时间并且不给我任何结果时,这个真值表有超过 100 万条记录
SELECT DISTINCT /*+ richs_secret_hint */
em_code, (to_date(end_date,'DD-MM-YYYY') - level + 1) AS days
FROM
islaam_vca where em_code = '2222'
CONNECT BY level <= (to_date(end_date,'DD-MM-YYYY') - to_date(start_date,'DD-MM-YYYY') + 1)
order by days ASC
;
给我快速的结果
任何人都可以帮助我如何从真实表中获得快速结果
【问题讨论】:
-
你有
islaam_vca(em_code)的索引吗?表中有多少行匹配islaam_vca where em_code = '2222'? -
附带说明:您真的将日期存储为字符串,因此您必须使用
TO_DATE转换它们吗?不要这样做,使用适当的数据类型DATE来存储日期。那么,em_code是不是数字?您将它与一个字符串进行比较,但该字符串包含一个数字。 -
我想知道
richs_secret_hint应该做什么。唉,这不是每个人似乎都在寻找的神奇的“走得更快”的暗示。那是什么? -
你有关于 islaam_vca(em_code) 的索引吗?您的表中有多少行与 em_code = '2222' 的 islaam_vca 匹配? 2 行开始日期到结束日期
标签: sql oracle query-performance