我有一个包含数百万条目的 SQL 表,我试图查询有多少条目超过 60 天(Oracle 11.2.0.1.0)。
对于这个实验,我使用了 3 个不同版本的选择语句:(
成本值由 TOAD 为 Oracle V. 9.7.2.5 提供)
select count(*) from fman_file
where dateadded >= (select sysdate - 60 from dual)
费用:65select count(*) from fman_file
where dateadded >= sysdate - 60
成本:1909select count(*) from fman_file
where dateadded >= sysdate - numtodsinterval(60,'day')
成本:1884select count(*) from fman_file where dateadded >= '10.10.2009'
成本:1823
(10.10.2009 只是一个示例日期!!!)
我没有想到所有查询的准确时间值,但第一个确实是最快的。
所以我用其他子选择尝试了更多的选择查询(比如(从双重选择 1000)),它们(有时 WAY)比其他具有常量值的查询快。甚至似乎这个“WHATEVER”(错误/功能)也在 MySQL 中发生。
那么谁能告诉我为什么第一个查询比其他查询(方式)更快?
格雷茨
PS:这与sydate无关!问题是为什么(选择)的变化比其他的快?(稍微关注 Select-Variation(1.) 与 Constant-Variation (4.))