最初の質問を最適化し、とても素敵:-)MariaDBは今までここにクエリ
ことが、私は私のすべてのサーバーにMySQLを使用するために使用されるとセントOS 7は現在、MariaDBのinsteaが付属しているので、私はそれを試して与えていません。すべてはその三分の一を持って一致して、MySQLはミリ秒単位で実行し、MariaDBは秒:(
SELECT * FROM (
SELECT id, date_start FROM matches
WHERE matches.type =5409
AND matches.status =10
AND matches.date_start >= '2016-02-01'
AND matches.date_start <= '2016-02-08'
) AS tmp
INNER JOIN seat ON tmp.id = seat.match_id
テーブル席が540万個のエントリを持って取りつのクエリを除いて良いと思われます。すべての試合のために果たした3があります。席は
今、MySQLは巧みに最初のtmpテーブルを導出して、与えられた時間枠が見つかり単なる112の試合に参加する:一方
id select_type table type possible_keys key len ref rows Extra
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 112
1 PRIMARY seat ref match_id match_id 8 tmp.id 3
2 DERIVED matches ALL NULL NULL NULL NULL 1919638 Using where
MariaDB全体に最初の結合は、テーブルと一致しません。5百万のエントリのためにそれほどスマートではない:
id select_type table type possible_keys key len ref rows Extra
1 SIMPLE seat ALL match_id NULL NULL NULL 5462345
1 SIMPLE matches eq_ref PRIMARY PRIMARY 8 seat.match_id 1 Using where
match_idは、シートテーブルのキーです。
私はさまざまなアプローチを試みましたが、何も機能しませんでした。私はそれを読んで、他のクエリではやや速いことに気付いたので、私はまだMariaDBをあきらめたくありません。しかし、これは実際にショーストッパーです...
どんな助けでも大歓迎です! matches
については