0
次のクエリにインデックスを追加しようとしています。 perspective_user、タイムスタンプ、timestamp_added、およびconvo_id上の1つ、著者、ボディ、タイムスタンプ、およびtimestamp_added上の第2の指標、及びperspective_user、アイデンティティ、およびtimestamp_addedの最終インデックス: MySQL - 使用するインデックスはどのように知っていますか?
SELECT * FROM Messages t WHERE perspective_user=? and timestamp BETWEEN ? AND ? AND
timestamp_added =
(select max(timestamp_added) from Messages t2
where
t2.author = t.author AND
t2.body = t.body AND
t2.timestamp = t.timestamp AND
t2.timestamp_added <= ?
) AND convo_id IN(SELECT convo_id FROM Conversations WHERE perspective_user=? AND identity=? AND timestamp_added=?);
は、私が最初に考えたのは3つのインデックスでした。しかし、これはうまくいかず、わかる限り、実行には同じ時間がかかります。
このクエリにインデックスを追加するにはどうすればよいですか、より一般的には、後でそれらを正しく追加する方法をどのように知っていますか?
'explain select ... 'でクエリを別々に実行して、実行方法を確認します –
クエリではなくテーブルにインデックスを追加します – efekctive
この質問はhttp://stackoverflow.com/questionsの一部ではありません/ 43023274/mysqlの考え方は何ですか?インデックスは使用するかどうか、期待どおりに動作しますか?私はそこでインデックスの質問に対処しました。 –