【发布时间】:2017-05-07 11:58:24
【问题描述】:
如果我需要根据可能的字符串数组检查表中的字段(使用带有 Sequel gem 的 Postgres),最快的方法是什么?我已经尝试在每个条目之间使用| 从数组中构建一个正则表达式,然后使用它使用.where 搜索表,但它很慢......我希望可能会有更快方式。
【问题讨论】:
标签: ruby postgresql sequel
如果我需要根据可能的字符串数组检查表中的字段(使用带有 Sequel gem 的 Postgres),最快的方法是什么?我已经尝试在每个条目之间使用| 从数组中构建一个正则表达式,然后使用它使用.where 搜索表,但它很慢......我希望可能会有更快方式。
【问题讨论】:
标签: ruby postgresql sequel
如果您的字段可以等于多个单词之一,您可以使用:
SELECT * FROM table WHERE field IN ('apple', 'banana', 'carrot', 'dog', ....)
【讨论】:
PostgreSQL 可能不会使用|s 的正则表达式查找索引,这可以解释大型数据集上速度慢的原因。 IN 运算符是您想要使用的,因为它应该能够使用索引查找(假设有适当的索引)。续集:
DB[:table].where(:field=>['string1', 'string2', 'string3'])
【讨论】: