我把这张桌子放在一个服务器上:
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小时内执行查询.服务器在22分钟内使用MyISAM。
使用TokuDB的查询显示了“查询了大约38230000行,获取了大约303929行,加载数据仍然保持”状态。
为什么TokuDB查询持续时间这么长?TokuDB是一个很好的引擎,但我不知道我做错了什么
服务器使用的是MariaDB 5.5.38服务器
发布于 2014-06-13 11:30:14
TokuDB目前没有像https://github.com/Tokutek/tokudb-engine/issues/143中提到的那样,在这个语句上使用它的批量获取算法。我添加了一个链接到这个页面,所以它被认为是即将到来的工作的一部分。
https://stackoverflow.com/questions/24201286
复制相似问题