構造が次のような特定のロギングテーブルの場合:
CREATE TABLE `example` (
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`quantity` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
`price` varchar(15) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
エントリが毎分挿入される場合、このテーブルをインデックスなしで残す方が効率的であることを理解しています。ただし、同様のテーブルをと比較しようとすると問題が発生しますSELECT
次のクエリの平均速度は約3.7秒です
SELECT * FROM (
SELECT `t1`.`time`,
`t1`.`quantity` AS `q1`,
`t1`.`price` AS `p1`,
`t2`.`quantity` AS `q2`,
`t2`.`price` AS `p2`
FROM `example 1` AS `t1`,
`example 2` AS `t2`
WHERE `t1`.`time` = `t2`.`time`
ORDER BY `time` DESC LIMIT 72
) AS dt ORDER BY time ASC;
このクエリにかかる時間を大幅に短縮する方法はありますか?同様のクエリ、
SELECT * FROM (
SELECT *
FROM `example`
ORDER BY `time` DESC LIMIT 72
) AS dt ORDER BY time ASC;
たった0.008秒かかります。それで、2つの別々のクエリを実行し、PHPを使用してそれらを比較する方が効率的ですが、はるかに醜いと思います。