繁体   English   中英

准备好的SQL查询与扩展WHERE过滤器

[英]Prepared SQL query vs widening WHERE filter

我一直在使用R使用DBI软件包来连接我的Oracle DB。 我读到,当尝试在不同时间查询同一条语句时,准备查询通常是一个好习惯。

我的问题是,假设有无限的RAM容纳下载的数据,哪些因素可能会影响两种情况之间不同的运行时间:N次运行准备好的查询或使用WHERE ... BETWEEN过滤器?

假设我必须运行一个查询来分析2012年至2018年之间的一些时间序列信息。我发现在分析窗口之间每月运行一次准备好的查询与仅过滤整个窗口之间,下载时间有所不同。

这取决于数据库如何优化查询。 也许只选择一个月时它选择使用索引进行优化,也许它选择使用全表扫描一次检索整个窗口。

通常,我希望查询一次检索整个数据集比每月将其分解成几部分要更有效。

发挥作用的因素包括:

  • 您正在访问表中百分之几的行?
  • 有可以使用的索引吗?
  • 最近访问过哪些数据(并且可能被缓存了)?
  • 数据库可以处理/缓存多少数据?
  • 您是否对语句使用了绑定变量?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM