所以基本上我是通过匹配2个表中的字符串来匹配地址的
表B有500万行,所以我真的不想每次想匹配地址时都为其创建新列
所以我考虑改为创建索引,我当前与地址匹配的索引看起来像:
CREATE INDEX matchingcol_idx ON tableB USING btree (sub_building_name || ', ' || building_name )
但是这不起作用,它不接受连接栏
然后我的更新查询将等于= b.sub_building_name || ','|| b.building_name
没有新的列和索引,这将花费多个小时
有没有一种方法而无需创建新的串联列?
答案 0 :(得分:4)
对于基于表达式的索引,您需要将表达式放在括号之间:
CREATE INDEX matchingcol_idx
ON tableB USING btree ( (sub_building_name || ', ' || building_name) );
但是,如果您在where
子句中使用完全相同的条件,则将仅使用该索引。任何仅引用其中一列的条件都不会使用该索引。