Tag: postgresql performance

Order BY将30ms查询转换为7120ms查询。 已知的性能问题?

我有一个包含1m记录的User表: User (id, fname, lname, deleted_at, guest) 我有以下查询正在对postgres 9.1 db运行: SELECT “users”.* FROM “users” WHERE (users.deleted_at IS NULL) AND (SUBSTRING(lower(fname), 1, 1) = ‘s’) ORDER BY guest = false, fname ASC LIMIT 25 OFFSET 0 使用pgAdmin 3,此SQL需要7120ms才能返回25行。 如果我删除’ORDER BY guest = false,fname ASC’,则查询只需31ms 。 我有以下索引: add_index “users”, [“fname”], :name => “index_users_on_fname” add_index “users”, [“guest”, “fname”], […]

更快地搜索字段的第1个字符与不匹配的记录?

我目前有以下内容: User (id, fname, lname, deleted_at, guest) 我可以通过fname初始查询用户列表,如下所示: User Load (9.6ms) SELECT “users”.* FROM “users” WHERE (users.deleted_at IS NULL) AND (lower(left(fname, 1)) = ‘s’) ORDER BY fname ASC LIMIT 25 OFFSET 0 由于以下索引,这很快: CREATE INDEX users_multi_idx ON users (lower(left(fname, 1)), fname) WHERE deleted_at IS NULL; 我现在要做的是能够查询所有不以字母AZ开头的用户。 我这样做是这样的: SELECT “users”.* FROM “users” WHERE (users.deleted_at IS NULL) […]