如果我需要针对可能的字符串数组检查表中的字段(使用Postgres和Sequel gem),最快的方法是什么?我已经尝试从数组中构建一个正则表达式,每个条目之间都有|
,然后使用它来使用.where
搜索表,但它很慢......我希望那里可能是一种更快的方式。
答案 0 :(得分:0)
如果您的字段可以等于多个字之一,则可以使用:
SELECT * FROM table WHERE field IN ('apple', 'banana', 'carrot', 'dog', ....)
答案 1 :(得分:0)
PostgreSQL可能不会使用索引进行|
的正则表达式查找,这可以解释大型数据集的速度慢。 IN
运算符是您要使用的运算符,因为它应该能够使用索引查找(假设适当的索引)。在续集:
DB[:table].where(:field=>['string1', 'string2', 'string3'])