问题描述
你好,问一下汤姆团队。
我想知道在SQL查询中的过滤器中放置正确的顺序。我是说,在那里的条件下。
1.我们如何帮助优化器以获得最佳性能?我知道它会根据自己的统计数据尝试执行最佳计划,但我想以最佳方式执行。
例如,我有一个带有强制性日期过滤器的查询,然后是一些其他条件:
2.建议对日期列进行索引,并将它们放在查询的第一位?
提前感谢。
问候,
我想知道在SQL查询中的过滤器中放置正确的顺序。我是说,在那里的条件下。
1.我们如何帮助优化器以获得最佳性能?我知道它会根据自己的统计数据尝试执行最佳计划,但我想以最佳方式执行。
例如,我有一个带有强制性日期过滤器的查询,然后是一些其他条件:
SELECT t1.col1,t1.col2,t1.col3,t2.col4 FROM table1 t1 LEFT JOIN table2 t2 ON t1.id=t2.id WHERE t1.first_date >= TO_DATE('01/04/2020','dd/mm/yyyy') AND t1.last_date < TO_DATE('09/04/2020','dd/mm/yyyy') AND t1.col1='some_value' AND t2.col4='some_value'复制
2.建议对日期列进行索引,并将它们放在查询的第一位?
提前感谢。
问候,
专家解答
1.优化器决定应用条件的顺序您在WHERE子句中放置过滤器的顺序不起作用。依靠这一点可能会导致一些意想不到的结果:
也就是说...
该查询外部连接T2并在WHERE子句中对其进行过滤:
这将查询变成内部联接。如果要过滤外部联接行,则需要在联接中执行此操作...在...子句:
2.假设您正在搜索日期范围,该日期范围是表中行的 “一小部分”,则索引日期可能会有所帮助。
对于该查询,我会考虑在以下位置创建索引:
在另一张表上:
WHERE子句中这些列的位置不相关。尽管它们所在的哪个子句 (WHERE,JOIN,ORDER等) 确实很重要,数据库是否会使用索引以及它的有效性如何。
也就是说...
该查询外部连接T2并在WHERE子句中对其进行过滤:
SELECT ... FROM table1 t1 LEFT JOIN table2 t2 ON t1.id=t2.id WHERE t2.col4='some_value'复制
这将查询变成内部联接。如果要过滤外部联接行,则需要在联接中执行此操作...在...子句:
SELECT ... FROM table1 t1 LEFT JOIN table2 t2 ON t1.id=t2.id AND t2.col4='some_value' WHERE ...复制
2.假设您正在搜索日期范围,该日期范围是表中行的 “一小部分”,则索引日期可能会有所帮助。
对于该查询,我会考虑在以下位置创建索引:
create index i on table1 ( col1, first_date, last_date );复制
在另一张表上:
create index i2 on table2 ( id, col4 );复制
WHERE子句中这些列的位置不相关。尽管它们所在的哪个子句 (WHERE,JOIN,ORDER等) 确实很重要,数据库是否会使用索引以及它的有效性如何。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle DataGuard高可用性解决方案详解
孙莹
435次阅读
2025-03-26 23:27:33
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
419次阅读
2025-04-15 17:24:06
墨天轮个人数说知识点合集
JiekeXu
370次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
361次阅读
2025-04-08 09:12:48
Oracle SQL 执行计划分析与优化指南
Digital Observer
335次阅读
2025-04-01 11:08:44
Oracle 19c RAC更换IP实战,运维必看!
szrsu
310次阅读
2025-04-08 23:57:08
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
297次阅读
2025-04-15 14:48:05
风口浪尖!诚通证券扩容采购Oracle 793万...
Roger的数据库专栏
296次阅读
2025-03-24 09:42:53
切换Oracle归档路径后,不能正常删除原归档路径上的归档文件
dbaking
290次阅读
2025-03-19 14:41:51
oracle定时任务常用攻略
virvle
288次阅读
2025-03-25 16:05:19