データベースのクエリ速度をテストするときに、何か変わったことに気付きました。私は2つのクエリを持っています。MySQLはリピートクエリを自動的に最適化しますか?
SELECT *
FROM `event_history`
WHERE `event_details` LIKE '%joe submitted order%'
と
SELECT *
FROM `event_history`
WHERE `event_details` LIKE '%bob submitted order%'
最初のものは、アプリケーションによって頻繁に実行されます。もう1つは、私が手動で一度だけ実行したものです。私は最初のものが0.0035秒しか走らなかったことに気付きましたが、2回目は約0.2500秒かかりました。これは予期せぬことです。
MySQLはこのクエリをどうにか最適化していますか?もしそうなら、私はこれを設定することができます。例えば、それを実稼働させる前に2番目のクエリを最適化する方法はありますか?
そのような最適化は行われません。ただし、クエリ/データベース構造を自分で最適化しないと、大きな違いが生じる可能性があります。したがって、クエリで使用される列に適切なインデックスを設定しなかった場合これは、一見等しい照会の違いを説明することができます。 – arkascha
@arkascha IDを増分するプライマリインデックスを持つシンプルなテーブルです。 – Goose
これはあなたのidexが正しく設定されていないことを意味します。 'event_details'カラムで選択するので、あなたは間違いなくそのカラムのインデックスを作成する必要があります!また、 'LIKE'演算子は他のすべてのオプションと比較して非常に遅いと考えるべきです。そのような高価なクエリを回避する方法はありませんか? – arkascha