我已经查了一堆这个问题的答案,找不到具体的答案 - 如果我错过了什么,请提前抱歉!另外,我是一个SQL优化菜鸟。
我有一个分析仪表板,它根据用户从大型数据库的请求提取数据。
用户加载的每个页面都会运行许多不同的查询来填充页面的不同部分(不同的图表,表格等)。由于用户可能会请求数年的数据,因此其中一些页面可能需要相当长的时间才能加载。
目前,页面的每个部分都将一个SELECT查询ping到SQL服务器,但由于页面有几个部分,这些查询最终会并行运行。
在队列中运行这些查询会更快 - 允许服务器一次处理一个查询吗?或者保持一切并行,原样是什么?
一次运行它们的额外好处是我们可以运行查询以首先填充页面的“首屏”部分......
希望一切都有意义,请放轻松我:)
我也说“这取决于”,但我倾向于并行。
我们来看看查询。也许我们可以加快他们的速度以避免这个问题。
这个评论太长了。
这个问题没有正确的答案。在某种程度上,运行并行SELECT
查询(通常)将比一个正在运行的查询更快。该点是2个查询还是200个查询取决于查询的性质,硬件配置,数据以及各种组件的速度。
当您考虑可能涉及多少不同的用户以及数据是否正在更新时,情况会变得更加复杂。如果锁启动级联,您可以通过并行查询和更新进入非常糟糕的情况。当然,这也可能发生在同时有多个用户的情况下。
我的猜测是你需要一个限制机制,一次运行n个查询,然后将其余部分放入队列中。