0

我有一个查询条件如下

numeric_column = text_column::numeric

为我的场景获得更低的成本和罚款。但是当我通过hibernate传递这个时,得到错误

"Not all named parameters have been set [:numeric]"

所以,我修改了我的查询如下

to_char(numeric_column, '9999999') = text_column

它工作正常,但我的查询解释显示上述查询的成本更高。

我怎样才能避免这种情况?有没有其他方法可以做到这一点?

(我使用的是 Postgresql-9.1,休眠版本是 4.1.0)

4

1 回答 1

0

尝试查看表达式索引并比较结果。默认情况下, B-tree索引应该没问题:

CREATE INDEX numeric_column_astext_btree ON your_table ((numeric_column::TEXT));

查询可以是这样的:

SELECT * FROM your_table WHERE numeric_column::TEXT = text_column;

但我同意上面的评论,即使用适当的类型更有意义。您也没有指定索引结构\d your_tableEXPLAIN ANALYZE.

于 2015-10-30T19:49:13.857 回答