最有效的查询MYSQL表的方法

时间:2013-08-12 21:05:29

标签: python mysql

所以我有一个表,将来会包含数千行。

这些行包含我需要返回的日期和其他数据。

我将有一个日期数组,我需要查询原始表以返回适当的数据。

目前我有一个设置,以便将整个原始表复制到一个数组中,然后对于每个日期,我然后使用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)”,它将查询表中列表数组中的相应日期。然后从单个返回的行中获取数据。

如果这是一个显而易见的问题,请注意。

2 个答案:

答案 0 :(得分:0)

假设表上有适当的索引,使用查询检索所需数据会更快。当前实现是O(n^2)操作。使用服务器上的适当索引,它将是O(log n)O(n log n)(我不完全确定我理解OP循环中显示的逻辑)。除了使用索引的效率之外,它还意味着将更少的数据从服务器传输到客户端应用程序。

答案 1 :(得分:0)

这不是一个好的解决方案。

您应该尝试将所有数据带回一个网络往返,而不是在列表中每个日期有一个。

您没有说明这在内存中代表了多少数据。你要小心“将整个表复制到数组中”。

查询的效率是EXPLAIN PLAN,桌面上的索引以及需要将其恢复的网络往返次数的组合。