所以我有一个表,将来它将包含数千行。你知道吗
这些行包含我需要返回的日期和其他数据。你知道吗
我将有一个日期数组,我需要查询原始表返回适当的数据。你知道吗
目前,我有一个设置,以便将整个原始表复制到一个数组中,然后针对每个日期,使用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)”中的每一个,它都将查询列表数组中具有相应日期的表。然后从返回的单个行中获取数据。你知道吗
如果这是一个明显的问题的话。你知道吗
这不是一个好的解决办法。你知道吗
您应该尝试在一次网络往返中返回所有数据,而不是在列表中为每个日期返回一个数据。你知道吗
你不能说它在内存中代表了多少数据。您需要注意“将整个表复制到一个数组中”。你知道吗
查询的效率取决于解释计划、表上的索引以及需要多少网络往返才能将其带回。你知道吗
假设表上有适当的索引,使用查询检索所需数据会更快。当前实现是一个
O(n^2)
操作。在服务器上使用适当的索引,它将是O(log n)
或O(n log n)
(我不完全确定我是否理解OP循环中显示的逻辑)。除了使用索引的效率外,这还意味着从服务器传输到客户机应用程序的数据将更少。你知道吗相关问题 更多 >
编程相关推荐