关于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'放在前面........"
是这样吗????????????
已邀请:
2

茳桦 - BI售前支持,cognos工程师 2013-11-20 回答

select执行顺序对sql的效率有很大的影响的,写sql要了解每个关键字的执行顺序,你按照他的执行顺序,预测一下能知道本条sql执行的数据量大小(即性能)。
标准的 SQL 的解析顺序为:
(1).FROM 子句, 组装来自不同数据源的数据
(2).WHERE 子句, 基于指定的条件对记录进行筛选
(3).GROUP BY 子句, 将数据划分为多个分组
(4).使用聚合函数进行计算
(5).使用 HAVING 子句筛选分组
(6).计算所有的表达式
(7).使用 ORDER BY 对结果集进行排序
针对你上面的问题,如果A = 'ABC'为否,则条件过滤为不存在,条件已经能够判断了,后面的条件就不会再执行。and条件尽量把值删选小的放在前面。
1

BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2013-11-20 回答

我个人觉得没有太大区别, SQL Server 会自动进行优化选择更加合适的执行计划,并且 AND 的关系就是一个并列的关系,先后顺序应该不影响。

要回复问题请先登录注册