我在 H2 数据库上运行这个类似 sql 的查询。
select columnA from table
where :param like columnB || '%'
order by char_length(columnB) desc
limit '1' offset '0'
问题是,尽管 columnA 和 columnB 已编入索引,但此查询运行全表扫描。我相信这是因为 where 子句后面不是列名而是参数。使用下面的解释分析查询,我可以看到索引用于选择数据,但这不是我想要的。
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.
性能在我的应用程序中非常关键,而且全表扫描是负担不起的。如何优化此查询以获得更好的性能?