Tef*_*Ted 24 mysql optimization performance sum
我在MySQL数据库上做了一个"从条形码中选择总和(foo)"查询,它总计了7.3毫米的记录,每次运行大约需要22秒.加速MySQL的总和是否有诀窍?
zom*_*bat 36
不,你无法加速功能本身.这里的问题实际上是你选择了730万条记录.MySQL必须扫描整个表,而730万是一个相当大的数字.我印象深刻的是它实际上完成得那么快.
您可以采用的策略是将数据分解为较小的子集(可能按日期?月?)并保持旧数据的总和不会发生变化.您可以定期更新总和,并且可以通过添加总和以及从那时起添加的任何新数据来计算总值,这将是更少的行数.
Yad*_*ada 11
在mysql中打开QUERY CACHE.默认情况下,缓存为OFF.你需要设置mysql ini文件.
-- hint mysql server about caching
SELECT SQL_CACHE sum(foo) FROM bar;
Run Code Online (Sandbox Code Playgroud)
如果没有对表进行任何更改,MySQL优化器可能能够返回缓存.
在这里阅读更多内容:http: //www.mysqlperformanceblog.com/2006/07/27/mysql-query-cache/
小智 8
这里有两件事:
1)您不应该定期为7.3m记录做总计 - 引入服务于业务需求的登台表(按天,月,年,部门等)并按计划填写,可能重复使用这些表而不是原始的'raw '表(如需要几天间隔时选择每天的汇总值等)
2)检查您的交易设置
http://dev.mysql.com/doc/refman/5.0/en/set-transaction.html#isolevel_repeatable-read