OR UPPER(lu.opis) LIKE UPPER('%SomeName%')
3つのパフォーマンスの問題があります:
または
最適化が不十分です。基本的に、すべての行をチェックするには、テーブルをスキャンする必要があります。インデックスが役立つ可能性は低いです。-
UPPER(indexed-column)
その列にインデックスを使用しないようにします。これは、その列にCOLLATION
があることを宣言することで簡単に回避できます。 つまり、「大文字と小文字を区別しない」、つまり、utf8_unicode_ci
のようなものです。;_ci
に注意してください 。 -
LIKE'%...
先頭のため、インデックスを使用できません ワイルドカード。
さらに、持っていることは通常愚かです
32497 row(s) returned
その多くの行をどうするつもりですか?クエリ自体がそうでない場合でも、ネットワーク転送時間はかなり長くなります。
LIKE
を「解決」するには 、またはコード> 、および
UPPER
問題を一度にまとめて、テキストを1つのテーブルの1つの列にまとめます。次に、 FULLTEXT
を入力します その列のインデックス。 、 MATCH ... AGAINST ...
少なくともSomeName
を実行する場合は、はるかに高速に実行されます 探す。 ( LEFT JOINs
別の問題です。)