Hibernate 如何将数字转换为文本以避免查询成本
我有一个如下的查询条件Hibernate 如何将数字转换为文本以避免查询成本,hibernate,postgresql,type-conversion,string-aggregation,Hibernate,Postgresql,Type Conversion,String Aggregation,我有一个如下的查询条件 numeric_column = text_column::numeric 为我的场景获得更低的成本和罚款。但当我通过hibernate时,会出现错误 "Not all named parameters have been set [:numeric]" 因此,我修改了我的查询如下 to_char(numeric_column, '9999999') = text_column 它工作正常,但我的查询解释显示上述查询的成本更高 我怎样才能避免呢?。有没有别的办法 (
numeric_column = text_column::numeric
为我的场景获得更低的成本和罚款。但当我通过hibernate时,会出现错误
"Not all named parameters have been set [:numeric]"
因此,我修改了我的查询如下
to_char(numeric_column, '9999999') = text_column
它工作正常,但我的查询解释显示上述查询的成本更高
我怎样才能避免呢?。有没有别的办法
(我使用的是Postgresql-9.1,hibernate版本是4.1.0)尝试查看和比较结果B树默认情况下,索引应该是良好的:
CREATE INDEX numeric_column_astext_btree ON your_table ((numeric_column::TEXT));
查询可以类似于:
SELECT * FROM your_table WHERE numeric_column::TEXT = text_column;
但我同意上面的评论,即使用适当的类型更有意义。您也没有指定索引结构
\d\u表
和解释分析
我现在找到了另一个选择。数字列=强制转换(文本列为数字)。解释成本对我来说没问题。真正的问题是:为什么首先要将数字存储在文本列中?@horse,我从第三方表中获取该值,它们存储为文本。数据集的大小是多少@尖峰