すべては、データベースがある同じマシン上で実行されます。これらのクエリは、同じことを別のやり方で行います。私はdbエンジンとしてmariadbを使用しています。なぜphpmyadminはmysqlコマンドラインよりも大幅に高速でしょうか?
クエリ1:
SELECT P.*
FROM posts as P
JOIN votes AS V on P.Id=V.PostId
JOIN users AS U on V.UserId=U.Id
WHERE U.Reputation >={}
AND P.Id NOT IN
(SELECT DISTINCT (P2.Id)
FROM posts P2, votes V2,users U2
WHERE P2.Id=V2.PostId
AND V2.UserId =U2.Id
AND U2.reputation < {})
ORDER BY P.Id;
約3.1をとり:
SELECT p.*
FROM users as u INNER JOIN votes ON u.Id=votes.UserId INNER JOIN posts as p ON p.Id=votes.PostId
WHERE (SELECT MIN(u2.reputation)
FROM users as u2 INNER JOIN votes ON u2.Id=votes.UserId INNER JOIN posts as p2 ON p2.Id=votes.PostId
WHERE p2.Id=p.Id) >= {}
ORDER BY p.Id;
は
クエリー2のphpMyAdminでMySQLのコマンドラインでは約2.9秒かかり、そして0.1秒mysqlコマンドラインでは秒、phpmyadminでは0.9秒です。
これらのタイミングはすべて、クエリの実行後に自動的に表示される時間から取得されます。
なぜphpmyadminが高速になるのですか?そして、なぜphpmyadminでは速度差が大きいのですが、mysqlコマンドラインでは違いはありませんか?
これらは同じデータベースで実行されていますか?多くの結果がありますか?管理ツールは 'LIMIT'節を適用しているかもしれません。 – tadman
はい、私は本当にそれらが同じdbで動いていると確信しています – smurfendrek123
@tadmanが示唆しているように、PHPMyAdminがパフォーマンスのためにクエリに 'LIMIT'を適用することによってデータベースから返されたレコード数を制限していることは確かです。デフォルトでは一度に25件(500件まで)しか表示されない場合、10万件のレコードは返されません。 – JNevill