0

H2データベースで実行されているSQLのようなクエリがあります。

select columnA from table 
where :param like columnB || '%' 
order by char_length(columnB) desc 
limit '1' offset '0'

問題は、columnA と columnB がインデックス化されているにもかかわらず、このクエリがフル テーブル スキャンを実行することです。これは、where 句の後に列名ではなくパラメーターが続くためだと思います。以下のクエリの Explain Analyst を使用すると、インデックス作成がデータの選択に使用されていることがわかりますが、それは私が望むものではありません。

select columnA from table 
where columnB like :param || '%' 
order by char_length(columnB) desc 
limit '1' offset '0' 
-- Note: This query is not an option.

私のアプリケーションではパフォーマンスが非常に重要であり、完全なテーブル スキャンは手頃な価格ではありません。このクエリを最適化してパフォーマンスを向上させるにはどうすればよいですか?

4

0 に答える 0