我是db2的新手我想用这样的单一查询选择大约200万个数据 它将选择并显示前5000个数据,在后台进程中它将选择其他5000个数据并保持相同直到所有数据结束帮我解决这个如何编写查询或使用函数
答案 0 :(得分:1)
听起来你想要所谓的阻止。但是,这实际上并没有在数据库级别处理(不是你想的那样) - 它是在应用程序级别处理的。您需要指定您的平台和编程语言,以便我们为您提供帮助。虽然如果你期望某人实际上读取 200万行,那么它需要一段时间......连续两天,这是连续23天。
原因 SQL本身并没有真正执行此操作,因为它(有点)效率较低。此外,SQL(按设计)设置为在概念和语法上对整个数据集进行操作。
答案 1 :(得分:1)
您可以使用其中一项新功能,其中包含来自Oracle或MySQL的分页:https://www.ibm.com/developerworks/mydeveloperworks/blogs/SQLTips4DB2LUW/entry/limit_offset?lang=en
同时,您可以通过指示OPTIMIZED FOR n ROWS和FETCH FIRST n ROWS来影响优化器。如果您打算只读,最好在查询“FOR READ ONLY”中指定此子句,这将增加并发性,并且游标将无法更新。此外,指定一个良好的隔离级别,在这种情况下,您最终可以使用“未提交的读取”(使用UR)。一个上一个锁定表就会很好。
不要忘记常见的做法,例如:索引或集群索引,只检索必要的列等,并始终通过Explain工具分析访问计划。