SQL Server 2008の低速テーブル、テーブルパーティション分割
-
03-07-2019 - |
質問
100万件を超えるレコードに成長したテーブルがあります...今日(すべて有効)
高速化する必要があります...テーブルパーティション分割が答えでしょうか?もしそうなら、クエリの構築に関するヘルプを得ることができますか?
テーブルには4つのbigint値キーがあり、すべてのプライマリキーにインデックスが付けられ、useridにインデックスdescがあり、他の値は最大139です(10,000人を超えるユーザーがいます)
ヘルプや指示をいただければ幸いです:)
解決
おそらく、クエリやインデックスを調整する必要があるだけです。 100万件のレコードで問題が発生することはありません。数億件のレコードとテーブルがあります。かなり高いパフォーマンスを維持できます。 SQL Serverプロファイラーは、このようなものに非常に役立つことがわかりました。 SQL Server Management Studioで使用できます(残念ながら、高速バージョンは使用できません)。 Query>を実行することもできます実際の実行計画を含めて
、クエリ中にどこで時間が費やされているかを示す図を表示します。
他のヒント
パーティション化について考える前に、インデックスとクエリワークロードを調査する必要があります。多数の挿入を行った場合、クラスター化インデックスが断片化される可能性があります。
SQL Server Expressを使用している場合でも、この無料ツールを使用してプロファイルを作成できます。 Microsoft SQL Server 2005 / 2008 Express Edition
他のコメントに同意します。適度に小さいデータベース(最大のテーブル1MMレコード)では、クエリが最適化され、残りのコードが冗長クエリでデータベースを乱用していない場合、データベース内のアクティビティが顕著な負荷を提供することはほとんどありません。データベースクエリと残りのコードとの相互作用を体感する良い機会です。
SQLテーブルのパーティション分割に関する私の実験を参照してください[ http://faiz.kera.la/2009/08/02/does-partitioning-improve-performance-for-sql-tables/] 。これがお役に立てば幸いです...そして、あなたの場合、1Mはそれほど重要な数字ではありません。パーティション分割に行くよりもクエリを微調整する必要があるかもしれません。