0

我在 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.

性能在我的应用程序中非常关键,而且全表扫描是负担不起的。如何优化此查询以获得更好的性能?

4

0 回答 0