关于SQL语句Where条件的顺序
0
SQL WHERE条件的顺序对SQL的速度有影响吗???
比方:
SELECT * FROM WHERE A = 'ABC' AND B = 'CCC' AND C = 'DDDD';这个SQL,
书上说:"AND是短路表达式,如果A = 'ABC'为否,则 A = 'ABC'后面的条件都不要判断了,如果A = 'ABC'值很少的话,优先把A= 'ABC'放在前面........"
是这样吗????????????
比方:
SELECT * FROM WHERE A = 'ABC' AND B = 'CCC' AND C = 'DDDD';这个SQL,
书上说:"AND是短路表达式,如果A = 'ABC'为否,则 A = 'ABC'后面的条件都不要判断了,如果A = 'ABC'值很少的话,优先把A= 'ABC'放在前面........"
是这样吗????????????
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
2 个回复
茳桦 - BI售前支持,cognos工程师 2013-11-20 回答
赞同来自: 天涯浪子 、rollin
标准的 SQL 的解析顺序为:
(1).FROM 子句, 组装来自不同数据源的数据
(2).WHERE 子句, 基于指定的条件对记录进行筛选
(3).GROUP BY 子句, 将数据划分为多个分组
(4).使用聚合函数进行计算
(5).使用 HAVING 子句筛选分组
(6).计算所有的表达式
(7).使用 ORDER BY 对结果集进行排序
针对你上面的问题,如果A = 'ABC'为否,则条件过滤为不存在,条件已经能够判断了,后面的条件就不会再执行。and条件尽量把值删选小的放在前面。
BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2013-11-20 回答
赞同来自: 天涯浪子