我已经查了一堆这个问题的答案,找不到具体的答案 – 如果我错过了什么,请提前抱歉!另外,我是一个SQL优化菜鸟.
我有一个分析仪表板,它根据用户从大型数据库的请求提取数据.
用户加载的每个页面都会运行许多不同的查询来填充页面的不同部分(不同的图表,表格等).由于用户可能会请求数年的数据,因此其中一些页面可能需要相当长的时间才能加载.
目前,页面的每个部分都将一个SELECT查询ping到SQL服务器,但由于页面有几个部分,这些查询最终会并行运行.
在队列中运行这些查询会更快 – 允许服务器一次处理一个查询吗?或者保持一切并行,原样是什么?
一次运行它们的额外好处是我们可以运行查询以首先填充页面的“首屏”部分……
希望一切都有意义,请放轻松我:)
解决方法:
我也说“这取决于”,但我倾向于并行.
>可能不应该具有比CPU核心数更多的并行性.
>我很少看到一个系统咀嚼所有CPU内核 – 除非它没有足够好的索引.也就是说,在提出问题之前修复索引.
>如果数据大于可缓存的数据,则排队可能会更快,因为您可能有一个阻塞点 – I / O.
>如果不断更改表,请关闭查询缓存.
>您的目标是尽早在页面上获得一些结果(可能是人机界面的目标),在除了一个AJAX被叫者(不是调用者)之外的所有人中添加一个小延迟.
>如果可以同时计算多个页面,事情会变得更加复杂.例如,您无法真正控制并行性.
我们来看看查询.也许我们可以加快他们的速度以避免这个问题.
标签:mysql,sql,select,query-optimization
来源: https://codeday.me/bug/20190622/1262925.html