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 に答える