我在users
表上有大约100万行,并且通过示例列A AA B BB C CC D DD E EE F FF
来计算int
值0
& 1
SELECT
CityCode,SUM(A),SUM(B),SUM(C),SUM(D),SUM(E),SUM(F),SUM(AA),SUM(BB),SUM(CC),SUM(DD),SUM(EE),SUM(FF)
FROM users
GROUP BY CityCode
结果8 rows in set (24.49 sec)
。
如何让我的陈述更快?
答案 0 :(得分:2)
在CityCode
列上创建索引。
答案 1 :(得分:2)
我相信这不是因为SUM(),试着说select CityCode from users group by CityCode;
它应该同时采取neary ...
答案 2 :(得分:2)
使用explain来了解查询的执行计划。
创建至少一个或多个索引。如果可能,请使用CityCode主键。
试试这个
SELECT CityCode,SUM(A),SUM(B),SUM(C),SUM(D), SUM(E),SUM(F),SUM(AA),SUM(BB),SUM(CC),SUM(DD),SUM(EE),SUM(FF)
FROM users
GROUP BY CityCode,A,B,C,D,E,F,AA,BB,CC,DD,EE,FF
答案 3 :(得分:1)
innodb_buffer_pool_size
值答案 4 :(得分:0)
您没有WHERE子句,这意味着查询必须扫描整个表。这会使它在大桌子上变慢。
你应该考虑你需要多久做一次以及它的影响是什么。一些建议是:
但请确保这种优化是绝对必要的。