simple sum()中的性能问题

b4lqfgs4  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(298)

我试图在mysql 5.7(安装在我的笔记本上-i5,8gbram)中做一个简单的求和,但是性能有很大的问题。
如果我这样做了:

SELECT distinct `Text Field`
FROM Table1
group by `Text Field`;

查询以7秒运行,返回72行
如果我这样做了:

SELECT sum(`Value Field`)
FROM Table1;

查询在不到1s的时间内运行,并返回一行总和。
但是,如果我这样做:

select `Text Field`, sum(`Value Field`)
from Table1
group by `Text Field`;

查询在连接超时前运行1小时!
这个表有26列(但我只在查询中使用这2个字段),有150万行和821mb。
我已经玩过一些记忆变量:

table_open_cache=2000
tmp_table_size=256M
innodb_buffer_pool_size=1000M
innodb_log_file_size=500M

并尝试按以下方式运行查询:

select `Text Field`, sum(`Value Field`)
from (
        SELECT `Text Field`, `Value Field`
        FROM Table1
    ) as T1
group by `Text Field`;

一切都没有成功。
编辑
我还有一个,自动增加,索引列。

yduiuuwa

yduiuuwa1#

快速查询不会对多个组键的一组行执行任何操作。第一个只扫描post组键值。第二种方法将整个表视为一个组,并扫描post组键值(在这两种情况下,post组键可能是表键,因此被索引了?),但第三种情况必须处理表的每一行,包括按照post组键将它们收集在一起并添加它们。
学会使用unique not null(包括主键)等索引和约束并加以说明。阅读有关查询实现/执行/优化/性能的一般信息&对于特定的(特定版本的)dbms。

相关问题