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

时间:2018-11-14 17:05:31

标签: sql r oracle odbc dbi

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

发挥作用的因素包括:

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