2016-04-05 27 views
2

私は、このテーブルを持っている:テーブルを縦に分割する必要がありますか?

  • 〜20万行(多少増えるかもしれません)最初の20列がで使用されている

  • 約40カラム(百万程度に拡大すると予想されます)残りの20個の列は、行の約2%だけが使用され、残りはnullです。クエリは主に最初の列で実行されます。

    私の質問は、1:1の関係を持つ別個のテーブルとしてこれらを分けてパフォーマンス上の利点があるかどうかです(または実際上の/弱点です)。列には、日付、整数、および短い文字列が混在しています。 Azure SQLとORMを使って実行します。

  • +0

    これは問題ではないようです。あなたはそれを監視/プロファイルしましたか?特定の問題が発生していますか? – Tanner

    +0

    返信ありがとう、私は数字を見ていない、私は再構成の機会を持っているので、私はDB技術を交換しています。それは早すぎる最適化と呼ばれるものもあります... – BobbyTables

    答えて

    3

    ストレージエンジンのperspactiveから、テーブルを分割すると、メインテーブルの行が小さくなり、単一ページの行数が増え、1回の読み込みでより多くのデータが得られ、おそらくは結果としてより良いパフォーマンスが得られます。 しかし、大部分のクエリがサブテーブルに参加するかどうかによって大きく異なります。 もちろん両方の方法をテストし、スパース列の機能(https://msdn.microsoft.com/en-us/library/cc280604.aspx)も考慮する必要があります。

    +0

    入力に感謝し、SPARSEを認識しませんでした。病気のように見えるいくつかのテストを行う必要があります – BobbyTables

    関連する問題