【发布时间】:2014-08-03 18:36:06
【问题描述】:
我在一台服务器上有这个表:
CREATE TABLE `mh` (
`M` char(13) NOT NULL DEFAULT '',
`F` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`D` char(6) DEFAULT NULL,
`A` int(11) DEFAULT NULL,
`DC` char(13) DEFAULT NULL,
`S` char(22) DEFAULT NULL,
`S0` int(11) DEFAULT NULL,
PRIMARY KEY (`F`,`M`),
KEY `IDX_S` (`S`),
KEY `IDX_M` (`M`),
KEY `IDX_A` (`M`,`A`)
) ENGINE=TokuDB DEFAULT CHARSET=latin1;
和同一张表,但在另一个类似的服务器上使用 MyISAM 引擎。
当我执行这个查询时:
CREATE TEMPORARY TABLE temp
(S VARCHAR(22) PRIMARY KEY)
AS
(
SELECT S, COUNT(S) AS HowManyS
FROM mh
WHERE A = 1 AND S IS NOT NULL
GROUP BY S
);
该表有 1.2 亿行。使用 TokuDB 的服务器在 3 小时内执行查询……使用 MyISAM 的服务器在 22 分钟内。
使用 TokuDB 的查询显示“查询了大约 38230000 行,提取了大约 303929 行,仍在加载数据”状态。
为什么 TokuDB 查询持续时间这么长? TokuDB 是一个非常好的引擎,但我不知道这个查询我做错了什么
服务器使用的是 MariaDB 5.5.38 服务器
【问题讨论】:
标签: mysql database-performance myisam mariadb tokudb