如何在运行时从慢速sql查询传递结果

时间:2015-03-10 11:27:45

标签: sql dynamic

有没有办法从查询中加载结果需要超过一分钟才能返回结果?

让我详细说明一下情况。我有一个非常复杂的SQL查询。由于涉及的规范化程度,它在5个不同的表上具有多个连接。

所以我的查询返回大约6k条记录,但是获取这些记录需要花费一分多钟。

在用户必须等待超过一分钟才能加载页面的网站上,这看起来不太好。那么有什么方法可以在查询执行时实时传递结果?而不是等待整个查询完成。我希望每个人都明白我想在这里提出的观点......

4 个答案:

答案 0 :(得分:2)

虽然您没有指定您正在使用的DBMS或网络平台,但一般情况下,如果您在查询中使用ORDER BY,则无法进行此操作,因为这将需要整个结果集按顺序排列工作。

听起来您应该专注于优化查询,或者将结果缓存,以便每次加载页面时都不需要运行它。

答案 1 :(得分:0)

我认为更好的选择是创建一个"视图表",然后只返回视图的结果。我认为,此选项会减少查询的时间。

答案 2 :(得分:0)

我不了解你的系统,但我会尝试给你一些建议。

如果可能,您可以加载没有记录的页面,并使用ajax加载它们并动态插入行。

其他可能性是将此查询作为后端的第一步,但是异步,并在最后一步获得结果。它可能会减少这个时间,因为查询将与其他步骤并行执行。

显然你应该尝试过优化查询并应用一些缓存方法,正如@richard所说。

答案 3 :(得分:0)

使用分页,在sql中我们有Limit和offset看看你是否可以使用它们参考这个link例如