【发布时间】:2014-10-22 20:24:59
【问题描述】:
我正在使用带有 Postgresql 数据库的 Rails 构建 API。我有一个 User 模型,users 表有 3 列,email、name 和 city。
我想创建一个 URL,允许用户在我的 User 模型中搜索多个字段,例如,当用户在以下 URL 中搜索时:
http://localhost:3000/search?term=foo
它在 email、name 和 city 列中搜索术语“foo”并返回所有匹配项。这与您在 iTunes Store (http://itunes.apple.com/search?term=foo) 上搜索时类似。
到目前为止,这是我的查询:
SELECT
email
name
city
FROM
users
WHERE
email = '#{term}' OR
name = '#{term}' OR
city '#{term}';
这可行,但是当您有很多记录时,它太慢了(>4000 毫秒)。有谁知道可以使这个查询更好的更好的 SQL 或 Rails/ActiveRecord 方法?我已经为所有三列添加了索引。
非常感谢!
【问题讨论】: