Postgresql 比较VARCHAR和其他VARCHAR的快速方法
我在数据库中有一个遍历整个表的处理。在某些时候,我需要检查Postgresql 比较VARCHAR和其他VARCHAR的快速方法,postgresql,comparison,plpgsql,varchar,Postgresql,Comparison,Plpgsql,Varchar,我在数据库中有一个遍历整个表的处理。在某些时候,我需要检查VARCHAR是否匹配列中的任何值 我想知道做这件事的最快方法是什么。每次都进行SQL比较吗?将表值检索到VARCHAR数组?另一个解决方案 表中的迭代次数超过数百万次,因此比较将进行数百万次。在匹配表中,有几百个值 那么,什么是最好的方法呢?在小表中的varchar列上有一个索引。然后查找将尽可能快。普通btree索引(默认)适用于相等运算符 CREATE INDEX smalltbl_lookup ON smalltbl(lookup
VARCHAR
是否匹配列中的任何值
我想知道做这件事的最快方法是什么。每次都进行SQL比较吗?将表值检索到VARCHAR数组
?另一个解决方案
表中的迭代次数超过数百万次,因此比较将进行数百万次。在匹配表中,有几百个值
那么,什么是最好的方法呢?在小表中的
varchar
列上有一个索引。然后查找将尽可能快。普通btree索引(默认)适用于相等运算符
CREATE INDEX smalltbl_lookup ON smalltbl(lookup);
如果只查找某些值,这将是最快的方法:
EXISTS (SELECT * FROM smalltbl WHERE lookup = bigtbl.lookup)
导致索引搜索。如果查找所有值(听起来不像),则左连接
更快:
SELECT *
FROM bigtbl b
LEFT JOIN smalltbl s USING (lookup)
将小表中的值转换为数组并在其中进行检查无法与索引搜索竞争。我认为这是一个标准联接?您需要检查VARCHAR是否匹配表中的任何值或列中的任何值?