私のクエリのようなものです:サブクエリが速く実行されても、サブクエリを使用するSQLクエリが遅いのはなぜですか?
SELECT *,
(SELECT COUNT(*) FROM comments WHERE comments.thread = threads.id) AS comments
FROM threads
LIMIT 10
comments.thread
がインデックスされ、このようなクエリは速く走る:
SELECT COUNT(*) FROM comments WHERE comments.thread = 'someId'
をしかし、私のクエリはめちゃめちゃ遅いです。それは私が定義した限界の10秒間を要します。どうして?このクエリの
*あなたのクエリが何であるかを私たちに示す必要がある* ...「私のクエリは次のようなものである」*実際に*、ではないあなたが似ていると信じている何かのように。あなたは、あなたがここで提供したことが、あなたの質問の要点を伝えていることに本当に似ていると仮定しているかもしれませんが、必ずしもそうであるとは限りません。表示されたクエリは、実際には有効なSQLではありません。あなたの*クエリを表示します。必要に応じてテーブル名とカラム名を変更しますが、それ以外は何もしないでください。 –
私は5.6.22のあなたの質問と、適切なインデックスを使って「何かのようなもの」を走らせました。それはうまく最適化されました( 'SHOW SESSION STATUS LIKE 'Handler%'; 'から導かれたように) –