SQL Server Count(*) パフォーマンス
SQL Server で大きなテーブルを処理する場合、さまざまな count(*) パフォーマンスの問題が発生する可能性があります。数百万行あるものなど。根本的な理由と考えられる解決策を探ってみましょう。
正確なカウントの最適化
正確な等価性チェックを実行するとき (例: if (select count() from BookChapters) = 0)、SQL Server は存在チェックを使用してクエリを最適化します (存在する場合(select ) BookChaptersより))。この最適化により、実際の行カウントがスキップされるため、クエリの実行が高速化されます。
不等性チェックのパフォーマンス ペナルティ
ただし、不等性チェックを使用する場合 (例: if (select count) () from BookChapters) = 1 または if (select count() from BookChapters) > 1)、SQL Server はインデックス検索またはテーブル スキャンに依存します。 BookChapters テーブルには非クラスター化インデックスがないため、この場合はテーブル全体のスキャンが実行されます。この時間のかかる操作により、速度が大幅に低下することが説明されています。
より高速にカウントするための代替手法
パフォーマンスを向上させるには、大きなテーブルを処理するときに次の手法を検討してください。
sysindexes テーブルから行数を抽出します。これにより、テーブル行の迅速かつ信頼性の高い推定が提供されます。
sys.partitions テーブルを使用して、テーブルまたはクラスター化インデックスの各パーティションに関連付けられた行を合計します。これにより、正確かつ効率的な行数が得られます。
以上が大きなテーブルの SQL Server COUNT(*) のパフォーマンスを向上するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。