将 VARCHAR 与另一个 VARCHAR 进行比较的快速方法
我在数据库中进行了迭代整个表的处理。在某些时候,我需要检查 VARCHAR
是否与列中的任何值匹配。
我想知道什么是快速的方法来做到这一点。每次都进行SQL比较吗?将表值检索到 VARCHAR 数组
?另一个解决方案?
表中的迭代次数超过数百万次,因此将进行数百万次比较。在匹配表中,有几百个值。
那么,最好的方法是什么?
I have a processing in database that iterate over an entire table. At some point, I need to check if a VARCHAR
matches any value in a column.
I want to know what is the fast way to do this. Do SQL comparison each time? Retrieve the table values to a VARCHAR array
? Another solution?
The iteration in the table is over millions, so the comparison will be done million times. In the match table, there a few hundred values.
So, what is the best approach for this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在小表的
varchar
列上有一个索引。那么查找将尽可能快。普通的 btree 索引(默认)对于相等运算符很有用。如果您只查找某些值,这将是最快的方法:
导致索引搜索。如果您查找所有值(听起来不像您所做的那样),
LEFT JOIN
会更快:将小表中的值转换为数组并在那里进行检查无法与索引搜索竞争。
Have an index on the
varchar
column in the small table. Then the look-up will be as fast as possible. A plain btree index (default) is good for the equality operator.If you only look up some values, this will be the fastest way:
Resulting in an index search. If you look up all values (does not sound like you do), a
LEFT JOIN
is faster:Transforming the values from the small table into array and checking there cannot compete with an index search.