像查询一样优化H2 SQL:其中'where'子句后面没有列名

时间:2013-10-21 14:52:46

标签: sql optimization h2

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

在我的应用程序中,性能非常关键,全表扫描无法承受。 如何优化此查询以获得更好的性能?

0 个答案:

没有答案