[英]Readable SQL queries when filtering date + time stamp on today
从今天开始过滤行时,如果我希望Oracle使用索引,则应避免使用truncate函数。 我会写
trade_date >= trunc(sysdate) and trade_date < trunc(sysdate+1)
代替
trunc(trade_date) = trunc(sysdate)
但是后者更具可读性。
是否有技巧来提高可读性并仍使用索引? 我正在寻找要在多个SQL中使用的通用解决方案(因此,没有基于函数的索引)
首先,如果您想获得更好的性能,没有什么比所谓的more readable
更高了。 任何中间开发人员都将以相似的方式阅读两者。 因此,请忽略可读性。
最好的方法是创建2个相似的表并放置几千条记录,并使用两种方法比较成本。
我尝试使用一张有几百万条记录的表,并进行了比较。 尽管两者的成本几乎相同,但在不同连接的多个列上进行多次试验后, trunc(trade_date) = trunc(sysdate)
表现优于trade_date BETWEEN trunc(sysdate) and trunc(sysdate+1)
。
所以我也建议第二种索引方法。 尽管我没有在它们上创建索引,但是您可以尝试自己检查一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.