|
|
1
1
所有查询都访问相同的变量,仅在用于运行总和和总计的条件上有所不同。
要在单个查询中运行所有这些,我们必须将每个结果分配给不同的列,因此
基本更换
一般来说
例如:
它可以重写(虽然速度稍慢)为
这是
同样适用于
考虑时
我们的第一次迭代允许简单的替换:
哪里
或者简单地
因此,我们的示例查询变成:
合并车轮
在这种情况下,至少有一个条件对整个表有效,即一个查询没有
否则,我们将合并这三个条件,并使用其中最大或最宽松的条件(因此,如果我们选择去年、上月和上周,我们实际上只添加去年的选择)。 我们可以自动执行此操作,并希望MySQL优化器能够解决问题:
索引优化由于索引的原因,单个查询可能会实际运行 更慢的 而不是几个不相交的查询。如果条件和值实际针对多个不同的列,导致索引效率降低,则通常会发生这种情况。 如果根本没有索引,那么合并查询应该总是比单独运行查询更方便。
理论上,我们希望
covering index
包含出现在
在此示例中,条件基于
然而,在实践中,很可能是因为覆盖指数太大而无法被接受,或者如果是这样的话,它是有益的。在这种情况下,我们仍然会合并多个查询,但这次合并为多个查询:
|
|
|
giantjenga · 优化整数向量到二进制向量的转换 1 年前 |
|
|
Daniel Lobo · 使用约束进行优化 1 年前 |
|
Sergio · python中大量数字的乘法 2 年前 |
|
|
Sergey Dev · 临时表与表变量 2 年前 |
|
|
John · 减少C中的内存消耗++ 2 年前 |