Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 如何将数字转换为文本以避免查询成本_Hibernate_Postgresql_Type Conversion_String Aggregation - Fatal编程技术网

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,我从第三方表中获取该值,它们存储为文本。数据集的大小是多少@尖峰