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

标签 sql select parallel-processing sap

一般来说,如果我需要从具有大量记录的单个表中检索信息,那么这样做是因为多个查询受主键限制并并行执行,还是作为一个大选择来执行更好?

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

ERROR_NUM ERROR_CODE CREATION_DATE STATE ...
1 55 09.20.2013 DE
2 23 09.21.2013 加利福尼亚州
3 55 09.21.2013 米
4 24 09.22.2013 德国
...
5000000 67 11.18.2013 纽约

如果我需要获取诸如每天每个状态的错误之类的信息,最好只做一个
SELECT what_i_need FROM 错误,或者我应该把它分成:

SELECT what_i_need FROM errors WHERE error_num BETWEEN 1 AND 100000
SELECT what_i_need FROM errors WHERE error_num BETWEEN 100001 and 200000
...等等

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

最佳答案

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

关于sql - 将 SQL 选择拆分为多个查询是否更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20047833/

相关文章:

mysql - DATEDIFF() 函数关于以月为单位返回结果的问题

MySQL 数据传输/更新到另一个数据库

mysql - 让 SQL 与选择表单元素一起使用,以逗号分隔

c++ - vector C++ 中的并行搜索

在 R 中并行运行 for 循环

php - PDO - SQL COUNT 在 PHP 函数中不起作用

sql - PLS-00049 : bad bind variable (1)

mysql - 如何从fld_Date的引用字段中获取下一个日期字段?

sql - 选择所有带数字的字符串

Java 流 API : why the distinction between sequential and parallel execution mode?