我的查询条件如下
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)
答案 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_table
和EXPLAIN ANALYZE
。