哪个更快?还有其他区别吗?
A.
SELECT
*
FROM
my_table
WHERE
my_date >= DATE '2013-01-17';
B.
SELECT
*
FROM
my_table
WHERE
my_date >= TO_DATE('17/01/2013','dd/mm/yyyy');
最佳答案
有意义的不同是极不可能的。如果您的瓶颈是将字符串文字转换为日期的速度有多快,我倾向于宣布胜利并为历史上第一个完美调整的应用程序干杯。或者认真质疑我做错了什么,迫使如此多的文字需要转换为日期。
理论上,使用日期字面值应该会快一点,因为格式是固定的,所以您不必先解析格式掩码,然后再解析字符串。但这假设 Oracle 在内部麻烦编写优化的日期文字路径,而不是在内部通过 to_date
代码路径(这可能取决于特定的 Oracle 版本)。而且,就像我说的,如果您处于这种差异很重要的位置,那么您要么做错了事情,要么您对应用程序进行了彻底的调整,几乎可以肯定是时候停止了。
关于oracle - 日期文字是否比使用 to_date 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25165136/