将SQL选择拆分为多个查询是否更快



一般来说,如果我需要从一个有大量记录的表中检索信息,最好是作为主键限制的多个查询并行执行,还是作为一个大选择?

例如,如果我有下表ERRORS,其中至少有500万行:

ERROR_NUM ERROR_CODE CREATION_DATE状态。。。1 55 09.2013 DE2013年9月21日2 23 CA3 55 2013年9月21日MI2013年9月4日。。。5000000 67 11.18.2013年

如果我需要获得像每天每个州的错误这样的信息,那么做一个从错误中选择what_i_need,或者我应该将其拆分为:

从错误中选择what_i_need,其中error_num介于1和100000之间从错误中选择what_i_need WHERE error_num BETWEEN 100001 and 200000等

然后在检索到数据后以编程方式进行组合?

使用单个SELECT语句,确保表的索引正确,并在数据库级别使用正确的分组运算符。索引和分组需要相互匹配——根据实际的查询,DBMS可能能够利用索引的巨大优势。像往常一样,测量,测量。使用一组真实的测试数据(不仅大小相同,而且值分布也相同!),并让系统在执行查询时编写SQL跟踪。然后分析结果,看看查询是否可以优化。尝试"水平"拆分查询通常不会加快速度,而且可能会使情况变得更糟,因为并行作业可能会相互"阻塞",从而造成巨大的I/O占用。

我会选择一个选项。降低速度的通常不是行的数量,而是列及其内容。

最新更新