タグ付けされた質問 「covering-index」

2
列が欠落しているにもかかわらず使用されているカバリングインデックス
MariaDB 10 / InnoDBを使用して、次のクエリがあります。 SELECT id, sender_id, receiver_id, thread_id, date_created, content FROM user_message WHERE thread_id = 12345 AND placeholder = FALSE ORDER BY date_created DESC LIMIT 20 このクエリは、指定された条件に従ってメッセージをフェッチし、作成日順に並べ替えます。 をカバーするインデックスがあり(thread_id, date_created)ます。 EXPLAINを実行すると、正しいインデックスが使用され、クエリがインデックスにないステートメントの途中で列を使用しているにもかかわらず、「Using where」という出力が表示されます。「placeholder = x」には任意の値を使用でき、結果は同じです。 別の列を使用するように並べ替えを変更すると、EXPLAINは「whereの使用。filesortの使用」を正しく示します。 ひっかきの瞬間があります。誰かがこれに光を当ててくださいませんか?追加の列のためにカバリングインデックスを完全に使用できなかったため、追加のfilesortが必要になることを期待します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.