私は1つのサーバーにこのテーブルを持っています:
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 億 2000 万行あります。TokuDB を使用するサーバーは 3 時間でクエリを実行し、MyISAM を使用するサーバーは 22 分で実行します。
TokuDB を使用したクエリでは、「約 38230000 行をクエリ済み、約 303929 行をフェッチ済み、まだデータを読み込んでいます」というステータスが表示されます。
なぜ TokuDB クエリの所要時間は非常に長いのですか? TokuDB は本当に優れたエンジンですが、このクエリで何が間違っているのかわかりません
サーバーはMariaDB 5.5.38サーバーを使用しています