所以我有一个表,将来会包含数千行。
这些行包含我需要返回的日期和其他数据。
我将有一个日期数组,我需要查询原始表以返回适当的数据。
目前我有一个设置,以便将整个原始表复制到一个数组中,然后对于每个日期,我然后使用for循环来复制所有数据。
for un in range(0,listc)
for i in range(0,bigtablec)
if list[un] == bigtable[i][1]
a[un] = bigtable[i][2]
以上是它目前如何运作的一个例子。
我的问题是在bigtable上使用多个SELECT查询是否会比上面的方法更快。
因此,对于每个“for un in range(0,listc)”,它将查询表中列表数组中的相应日期。然后从单个返回的行中获取数据。
如果这是一个显而易见的问题,请注意。
答案 0 :(得分:0)
假设表上有适当的索引,使用查询检索所需数据会更快。当前实现是O(n^2)
操作。使用服务器上的适当索引,它将是O(log n)
或O(n log n)
(我不完全确定我理解OP循环中显示的逻辑)。除了使用索引的效率之外,它还意味着将更少的数据从服务器传输到客户端应用程序。
答案 1 :(得分:0)
这不是一个好的解决方案。
您应该尝试将所有数据带回一个网络往返,而不是在列表中每个日期有一个。
您没有说明这在内存中代表了多少数据。你要小心“将整个表复制到数组中”。
查询的效率是EXPLAIN PLAN,桌面上的索引以及需要将其恢复的网络往返次数的组合。