根据定义(至少从我所看到的),可优化意味着查询能够让查询引擎优化查询使用的执行计划。我尝试查找答案,但似乎没有太多关于该主题的内容。所以问题是,什么使 SQL 查询可控制?任何文档将不胜感激。
以供参考:Sargable http://en.wikipedia.org/wiki/Sargable
最常见的会进行查询的事情不可控制的是在 a 中包含一个字段function在 where 子句中:
SELECT ... FROM ...
WHERE Year(myDate) = 2008
SQL 优化器无法使用 myDate 上的索引,即使存在索引也是如此。从字面上看,它必须为表的每一行评估这个函数。使用起来更好:
WHERE myDate >= '01-01-2008' AND myDate < '01-01-2009'
其他一些例子:
Bad: Select ... WHERE isNull(FullName,'Ed Jones') = 'Ed Jones'
Fixed: Select ... WHERE ((FullName = 'Ed Jones') OR (FullName IS NULL))
Bad: Select ... WHERE SUBSTRING(DealerName,4) = 'Ford'
Fixed: Select ... WHERE DealerName Like 'Ford%'
Bad: Select ... WHERE DateDiff(mm,OrderDate,GetDate()) >= 30
Fixed: Select ... WHERE OrderDate < DateAdd(mm,-30,GetDate())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)