我有以下查询:
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上有一个索引...有关为什么这么长时间运行的任何想法?感谢
答案 0 :(得分:1)
我在这里遗漏了什么吗?看起来好像查询需要大约2.5ms才能运行。我不认为这是“很多时间”。
有趣的是,查询优化器已经选择不在user_id上使用你的索引(因为解释提到了执行seq扫描而不是索引扫描),但我的理解是它将选择它(优化器)的任何方法认为最有效率的运行,并且你可以做很多事情。
答案 1 :(得分:0)
如果查询返回太多行,则序列扫描将比使用索引更有效。在这种情况下,您可以使用其他方法提高性能。另一方面,瓶颈可以是网络连接。