mysql - 从 TokuDB 查询创建临时表太慢

标签 mysql database-performance myisam mariadb tokudb

我在一台服务器上有这个表:

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 服务器

最佳答案

TokuDB 当前未在此语句上使用其批量获取算法,如 https://github.com/Tokutek/tokudb-engine/issues/143 中所述。 。我已添加到此页面的链接,因此它被视为即将进行的工作的一部分。

关于mysql - 从 TokuDB 查询创建临时表太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24201286/

相关文章:

mysql - SQL 查询故障 : "Invalid use of group function"

sql - MySQL Workbench 中的列标志是什么意思?

php - mysql_real_escape_string() : Access denied in codeigniter

mysql - SQL 性能 : comparing n values

c# - asp.net mvc Entity Framework 代码第一个网站加载时间过长

MySql 查询比它应该花费的时间长得多

mysql - 为什么从 VARCHAR 列中剥离一些数据后,MySQL MyISAM 表的大小相同?

mysql - 在不重建表的情况下重置 myISAM 上的 AUTO_INCREMENT

mysql - MySQL优化MyISAM表到MASTER服务器也可以复制到SLAVE服务器吗?

php - MySQL 时间戳是一个日期时间 : shouldn't it be an integer? 我需要通过 URL 传递它