如何在运行时传递慢 sql 查询的结果
How to pass results from slow sql query in runtime
有什么方法可以从需要超过一分钟的查询中加载结果到 return 个结果?
让我详细说明一下情况。我有一个非常复杂的 SQL 查询。由于涉及的规范化级别,它在 5 个不同的表上有多个不同的连接。
所以我查询 return 大约 6k 条记录,但是获取这些记录需要一分多钟。
这在用户必须等待超过一分钟才能加载页面的网站上看起来不太好。那么有什么方法可以在查询执行时实时传递结果吗?而不是等待整个查询完成。我希望每个人都能理解我在这里要表达的观点...
我认为更好的选择是创建一个 "view table",然后仅 return 视图的结果。我认为,此选项会减少您的查询时间。
虽然您没有指定您使用的是什么 DBMS 或网络平台,但如果您在查询中使用 ORDER BY,通常这是不可能的,因为这需要整个结果集才能工作.
听起来您应该专注于优化查询或缓存结果,这样您就不需要在每次加载页面时都运行它。
我不了解你的系统,但我会尽力给你一些建议。
如果可能,您可以加载没有记录的页面,并使用 ajax 加载它们并动态插入行。
另一种可能性是在后端执行此查询作为第一步,但异步,并在最后一步获得结果。它会减少这个时间,可能是因为查询将与其他步骤并行执行。
显然你应该尝试优化查询并应用一些缓存方法,正如@richard 所说。
使用分页,在 sql 中我们有 Limit 和 offset 看看你是否可以使用它们参考这个 link 例如
有什么方法可以从需要超过一分钟的查询中加载结果到 return 个结果?
让我详细说明一下情况。我有一个非常复杂的 SQL 查询。由于涉及的规范化级别,它在 5 个不同的表上有多个不同的连接。
所以我查询 return 大约 6k 条记录,但是获取这些记录需要一分多钟。
这在用户必须等待超过一分钟才能加载页面的网站上看起来不太好。那么有什么方法可以在查询执行时实时传递结果吗?而不是等待整个查询完成。我希望每个人都能理解我在这里要表达的观点...
我认为更好的选择是创建一个 "view table",然后仅 return 视图的结果。我认为,此选项会减少您的查询时间。
虽然您没有指定您使用的是什么 DBMS 或网络平台,但如果您在查询中使用 ORDER BY,通常这是不可能的,因为这需要整个结果集才能工作.
听起来您应该专注于优化查询或缓存结果,这样您就不需要在每次加载页面时都运行它。
我不了解你的系统,但我会尽力给你一些建议。
如果可能,您可以加载没有记录的页面,并使用 ajax 加载它们并动态插入行。
另一种可能性是在后端执行此查询作为第一步,但异步,并在最后一步获得结果。它会减少这个时间,可能是因为查询将与其他步骤并行执行。
显然你应该尝试优化查询并应用一些缓存方法,正如@richard 所说。
使用分页,在 sql 中我们有 Limit 和 offset 看看你是否可以使用它们参考这个 link 例如