0

我有以下查询:

EXPLAIN ANALYZE SELECT "google_contacts".* 
FROM "google_contacts" 
WHERE "google_contacts"."user_id" = 1201

这个查询最终花费了很多时间,结果如下:

Seq Scan on google_contacts  (cost=0.00..394.99 rows=9999 width=183)
    (actual time=0.008..2.038 rows=9999 loops=1)
      Filter: (user_id = 1201)
Total runtime: 2.552 ms

该表只有 10 列,并且在 user_id 上有一个索引......关于为什么要花这么长时间运行有什么想法吗?谢谢

4

2 回答 2

1

我在这里错过了什么吗?看起来查询需要大约 2.5 毫秒才能运行。我不会将其描述为“很多时间”。

有趣的是,查询优化器选择不在 user_id 上使用您的索引(因为解释提到进行 seq 扫描而不是索引扫描),但我的理解是它将选择它(优化器)认为会运行的任何方法最有效,而且您对此无能为力。

于 2013-01-24T20:33:54.627 回答
0

如果查询返回的行太多,顺序扫描会比使用索引更有效。在这种情况下,您可以使用其他方法提高性能。另一方面,瓶颈可能是您的网络连接。

于 2013-01-24T21:18:56.580 回答