2

phpMyAdmin のような単純なステートメントを実行すると

SELECT *
FROM a

ここで、「a」には 500'000 行があり、ローカルホストで数ミリ秒の時間が得られます。

一部の複雑なクエリは、(予想どおり) はるかに長い時間を報告しますが、一部のクエリは 1/100 秒未満の非常に速い時間も報告しますが、phpMyAdmin の結果ページの表示には時間がかかります。

phpMyAdminで表示された実行時間は本当に真実で正確ですか?どのように測定されますか?すべてのサブセレクト、結合などを含むクエリ全体を測定しますか?

ありがとう!

アップデート

次のような独自の PHP スクリプトからテストすることをお勧めします。

$start = microtime(true);
$sql = "same statement as in phpMyAdmin";
$db = new PDO('mysql:host=localhost;dbname=mydb', 'root', 'lala');
$statement = $db -> prepare($sql);
$statement -> execute();
echo microtime(true) - $start . ' seconds';

phpMyAdmin で報告された同じステートメントの 0.005 秒と比較して、7 秒以上かかります。クエリは 300'000 行を返します。「LIMIT 0,50」で 50 行に制限すると、1/100 未満になります。その違いはどこから来るのですか?返されたオブジェクトなどを反復処理しません...

4

4 に答える 4

3

表示される実行時間は、クエリがサーバー上で実行されるのにかかった時間です。これは正確であり、MySQL エンジン自体から取得されます。残念ながら、結果を Web 経由でブラウザに送信して表示する必要があり、これにはさらに時間がかかります。

于 2013-03-08T11:49:47.973 に答える
1

phpMyAdmin はLIMITステートメントに句を自動的に追加するため、返される結果セットが小さくなり、処理が高速になります。

300,000 件または 500,000 件の結果がすべて必要な場合でも、実際にはLIMIT. 複数の小さなクエリが、単一の大きなクエリと同じ実行時間になるとは限りません。

于 2013-04-24T09:44:31.827 に答える