私は非常に単純なSQLクエリを持っています:
SELECT COUNT(DISTINCT x) FROM table;
テーブルには約150万行あります。このクエリの実行速度はかなり遅いです。と比較すると、約7.5秒かかります
SELECT COUNT(x) FROM table;
約435msかかります。クエリを変更してパフォーマンスを向上させる方法はありますか?私はグループ化して定期的なカウントを試み、xにインデックスを付けました。どちらも7.5秒の実行時間は同じです。
そうは思いません。150万行の個別の値を取得するのは、遅いだけです。
—
Ry-
C#で試してみたところ、メモリから 150万の整数の個別の値を取得するのに、私のコンピューターでは1秒以上かかりました。だからあなたはおそらく運が悪いと思います。
—
Ry-
クエリプランは、テーブル構造(インデックス)とチューニング定数(work)mem、effective_cache_size、random_page_cost)の設定に大きく依存します。適切な調整を行うと、クエリが1秒未満で実行される可能性があります。
—
wildplasser
もっと具体的に教えていただけますか?1秒未満で取得するには、どのインデックスと定数を調整する必要がありますか?簡単にするために、これが最初の列yに主キーを持つ2列のテーブルであり、150万行のint型の2番目の列xでこの「個別の」クエリを実行するとします。
—
ferson2020 2012年
すべてのインデックスを含むテーブル定義(
—
vyegorov 2012年
\d
出力psql
は良いもの)を含め、問題のある列を正確に入力してください。EXPLAIN ANALYZE
両方のクエリを確認するとよいでしょう。