2014-12-13 151 views
2

我有一个简单的问题,但我无法找到答案。在SQL WHERE子句中哪个更好?SQL WHERE条款条件评估

TO_CHAR (DAT, 'YYYYMMDD') BETWEEN '20080101' AND '20131231' 

DAT BETWEEN TO_DATE('20080101','YYYYMMDD') AND TO_DATE('20131231','YYYYMMDD') 

仅计算一次,然后在条件值表中的测试的每一行,还是SQL引擎重新计算每一次?

谢谢!

回答

1

任何涉及常量和文字的参数只会被评估一次。然而,第二个更好 - 它允许您索引dat列,然后使用此索引来提高性能,而第二个索引不允许使用索引。

+0

是的,这就是我的想法!谢谢! – user2346329 2014-12-13 15:54:40