ホームページ >データベース >mysql チュートリアル >異なるベンダーにわたる大規模なデータベース テーブルの行を効率的にカウントするにはどうすればよいですか?
大規模なデータベーステーブルの行をカウントするためのヒント
非常に大規模なデータベース テーブルを扱う場合、行を正確にカウントすることが困難になることがあります。多くの記事で、従来の SELECT COUNT(*) FROM TABLE_NAME
メソッドは大規模なデータセットを扱う場合のパフォーマンスが低いと指摘しています。この記事では、次の特定の要件を考慮した、データベース ベンダーに依存しない行カウント ソリューションについて説明します。
データベースベンダーに依存しないソリューション
残念ながら、現時点では、COUNT(*)
メソッドを超えて正確な行数を取得できる、データベース ベンダーに依存しないソリューションはありません。標準構文は依然として最も信頼性の高い方法です。
SQL Server のおおよその解決策
SQL Server はいくつかの近似解を提供しますが、これらの方法は質問で必要とされる正確なカウントを満たせないため、この記事の範囲を超えています。
補足: SQL Server の例
問題を説明するために、14 億行と 12 列のテーブルをテストしました。
SELECT COUNT(*) FROM MyBigtable WITH (NOLOCK)
: 5 分 46 秒かかり、集計結果は 1,401,659,700 でしたSELECT Total_Rows = SUM(st.row_count) FROM sys.dm_db_partition_stats st WHERE object_name(object_id) = 'MyBigtable' AND (index_id
後者は、テスト中の同時書き込みにより、わずかに少ない行数を返します。したがって、正確な行数を取得するには、依然として SELECT COUNT(*)
が推奨される方法です。
以上が異なるベンダーにわたる大規模なデータベース テーブルの行を効率的にカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。