2

2 つのテーブル (1 つは 33k 行、もう 1 つは 7k 行) を取得しました。2 つのテーブルを比較し、2 つの ID が一致しない行を削除したいと考えています。しかし、クエリを送信すると、phpmyadmin がフリーズします。テーブルが大きすぎる可能性はありますか?

SELECT * FROM likes LEFT OUTER JOIN uploads on likes.upload_id = uploads.upload_id WHERE uploads.upload_id IS NULL 

データベースが何百万ものデータを処理することを意図していることは知っているので、エラーがどこにあるのかわかりません。

よろしく、マティアス

4

5 に答える 5

3

説明をして、mysql が何をするかを確認できるようにします。これにより、何行が使用されているかがわかります。

EXPLAIN SELECT * FROM likes LEFT OUTER JOIN uploads on likes.upload_id = uploads.upload_id WHERE uploads.upload_id IS NULL

別のブラウザーまたは別のセッションを使用して show processlist を使用し、クエリがどのように実行されるかを確認することもできます。

于 2012-04-13T08:24:32.680 に答える
2

テーブルはおそらくそれほど大きくありませんが、スクリプトが完了するまでに時間がかかる場合、PhpMyAdmin のクエリ タイムアウトが問題になる可能性があります。タイムアウトを変更してみるか、PhpMyAdmin をまったく使用しないでください。サーバー(または他のツール)でコマンドラインを使用してクエリを実行できるかどうかを確認してください。

以下も参照してください。

于 2012-04-13T08:38:38.347 に答える
0

フリーズは、それが機能していることを意味しますが、タスクを更新/「終了」することはありませんか?

もしそうなら、
私は同様のことがあり、列に複数のインデックスがあることが原因であることがわかりました。たとえば、列には PRIMARY インデックスと列にちなんで名付けられたインデックスがあるため、インデックスを確認してください

于 2014-12-19T10:33:59.110 に答える