ホームページ >データベース >mysql チュートリアル >異なるベンダーにわたる大規模なデータベース テーブルの行を効率的にカウントするにはどうすればよいですか?

異なるベンダーにわたる大規模なデータベース テーブルの行を効率的にカウントするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-14 16:41:44941ブラウズ

How Can I Efficiently Count Rows in a Massive Database Table Across Different Vendors?

大規模なデータベーステーブルの行をカウントするためのヒント

非常に大規模なデータベース テーブルを扱う場合、行を正確にカウントすることが困難になることがあります。多くの記事で、従来の SELECT COUNT(*) FROM TABLE_NAME メソッドは大規模なデータセットを扱う場合のパフォーマンスが低いと指摘しています。この記事では、次の特定の要件を考慮した、データベース ベンダーに依存しない行カウント ソリューションについて説明します。

  • データベースベンダーに依存せず、MySQL、Oracle、MS SQL Server をカバーします
  • 純粋な SQL ソリューション
  • 外部ツールを使用したり、データベース設計を変更したりしないでください

データベースベンダーに依存しないソリューション

残念ながら、現時点では、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。