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