は、私は、MySQLで、次の簡単なクエリを実行している:このSELECT文のスピードが、特定のLIMITの金額で大幅に変化するのはなぜですか?
SELECT SQL_NO_CACHE longitude, latitude FROM pins ORDER BY pin_id LIMIT 100000
これは、約0.08秒で実行されます。しかし、LIMITを120000に上げると、完了までほぼ1秒かかります。私は前後に複数のテストを実行しました。それは非常に一貫しており、約100700回のいずれかに行くことができますが、時には遅くて速いこともあります。何が起こっているかについての任意のアイデア?
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE pins index NULL PRIMARY 4 NULL 100000
(とLIMIT 200000)
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE pins index NULL PRIMARY 4 NULL 200000
追加情報
サイズ表(LIMIT 100000で)を説明:200M
innodb_buffer_pool_size:8G
サーバーには別の200GBデータベースがあります。 1
UPDATEは、私は私のサーバーをリセットし、物事は固定されているように見えます。クエリにはLIMITに比例した時間がかかります。私はまだ何が起こったのか知りたいので、生産中には起こらない。
UPDATE 2
新たな問題があります。 phpMyAdminでクエリを実行しようとしましたが、表示されている「読み込み中」のメッセージがハングアップします。私はそれを複数回試してみましたが、phpMyAdminを通してクエリを実行できないようです。 PHPで実行することは問題ありません。
これらの2つのケースでは、 'EXPLAIN SELECT ... 'の出力を指定してください。 –
@RickJamesが追加されました。最新の情報をご覧ください。 – DaiBu
InnoDBを使用している場合、 'innodb_buffer_pool_size'の値は何ですか? –