2017-03-02 1 views
0

私は約4000万行のテーブルを持っています。この表はヒープであり、いくつかのクラスター化されていない索引があります。私はいつも、1行には1つのフォワードフェッチしかないと思っていました。ヒープテーブルの転送フェッチ

私は現在のパフォーマンスの問題を診断するためにBrent Ozarのsp_blitzindexを実行しました。

sp_blitzindexによると、このヒープには50億以上の転送されたフェッチ(...)があります。

これがどのように可能か説明できますか?私は設計上の検討事項を探しているわけではなく、これがどのように機能するかについての説明だけを探しています。どうもありがとう!よろしく、SQL_M。

+0

になりまし-削除答えでソースとして使用品ではなく開始する悪い場所を得ますremoval-forwarded-records-heap-tables - 行内の各可変長列には、前方フェッチがあります。 –

+0

ありがとう、私は記事を読むでしょう。 –

答えて

1

論理的断片化。

1度に1行目が2行目の横にあり、3行目が同じページにあります。 これは最初の挿入時に発生していました。

時間が経過すると、2行目が更新されました(varcharカラムが保存された文字数で2倍になったとします)。行2は39,999,998行が「少し下に」移動するのを避けるために新しいページに移動されていました。

これに対抗するために、ポインタが行2新しい位置に行1から作成された、再びデータを最適化する方法を意味しないクラスタ化インデックスと3

繰り返し、40万を超える行を行にhttp://sqlmag.com/stored-procedures/ - ディスク、あなたは簡単に50億

I para-phrased Brent

+0

答えていただきありがとうございます。 –