日期与数字数据类型比较时性能低下

Slow performance with date comparison with number datatype

Select * from table
WHERE to_date(a.date_key, 'YYYY-MM-DD') BETWEEN to_date('&date3', 'YYYY-MM-DD') AND to_date('&date4', 'YYYY-MM-DD');

这里 a.date_key 是一个数字,我正在更改格式。但是应用上述过程会降低性能。

这是正确的做法还是我们可以用不同的方式让它变得更好。

如有任何帮助,我们将不胜感激。

这不是最好的方法。假设 date_key 是 YYYY-MM-DD 形式的字符串,然后将比较作为字符串:

WHERE a.date_key BETWEEN '&date3' AND '&date4'

比较会很准确,Oracle 可以在 date_key 上使用索引、分区和统计信息。

这引出了一个问题,为什么您有一个密钥而不是使用 date 数据类型。但那是另一个问题。

由于您的数字列是 YYYY-MM-DD 格式,您可以直接使用它们,如下所示:

SELECT * FROM your_table
 WHERE
    A.DATE_KEY BETWEEN '&date3' AND '&date4'

Here a.date_key is a number

如果真的是数字,你可以简单地使用

where a.date_key between 19810101 and 19891231