如何将数字转换为文本以避免查询成本

时间:2015-10-30 19:14:58

标签: hibernate postgresql type-conversion string-aggregation

我的查询条件如下

numeric_column = text_column::numeric

为我的方案降低成本和罚款。但是当我通过休眠传递它时,得到错误

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

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

to_char(numeric_column, '9999999') = text_column

它的工作正常,但我的查询解释了显示上述查询的更多费用。

我该如何避免?有没有其他选择呢?

(我使用的是Postgresql-9.1,而hibernate版本是4.1.0)

1 个答案:

答案 0 :(得分:0)

尝试查看Indexes on Expressions并比较结果。默认情况下, 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