質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Q&A

1回答

2057閲覧

SQLServer2014にて、INDEXをREBUILD後にINSERTする場合、REBUILDする必要はあるの?

yasaka_10

総合スコア8

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

0グッド

0クリップ

投稿2016/08/17 13:28

編集2016/08/17 21:08

初めて投稿いたします。よろしくお願いいたします。

SQLServer2014にて、某システムの既存のストアドで使用される、SQLのチューニングをやらせて頂いております。
チューニングとはいっても、作業としてはINDEXを作成や削除をしております。

早速本題についてなのですが、既存の処理の流れに、INDEXがPrimary Keyのみの1テーブルをREBUILDした後、当該テーブルにデータをINSERTしている箇所があります。
REBUILD前に、そのテーブルに対しCRUDを行っておらず、よってREBUILDするのはあまり効果がないように思えます。
もしREBUILDするのなら、せめてINSERTした後だと思います。
この処理は、月に1度実行するものなので、先月INSERTした分をREBUILDしている可能性はあります。
ちなみに、当該テーブルに対する処理としましては、REBUILD後、データをINSERTし、他テーブルがFROMであるSELECTのLEFT JOINにて使用されます。

皆様にお伺いしたい事は、上記の処理においてREBUILDする必要はあるのか、という事です。
もし更にお教えいただけるのでしたら、INDEXがPrimary KeyのみのテーブルにINSERTした場合、追加したデータのINDEXはどのようにリーフノードに割り振られるのかも併せてご説明頂けますと、大変ありがたく存じます。

以上です。ご回答の程、何卒よろしくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

月に一度、INSERTしかしないテーブルということでしょうか。

REBUILDして、INSERTという話ですが、FILLFACTORを設定しているなら意味はあるんじゃないでしょうか。
インデックスの間に入ることがあるのかどうか知りませんが、リビルドによってページに余裕を持たせることでページ分割の発生を予防しているのであれば意味はあるんじゃないかと思います。

どのように~というのは挿入するデータなど条件によりますし、ここで説明できる量じゃないと思いますのですみませんが私はパスします。
インデックスの断片化と再構築で調べればいろいろ出てくると思います。

投稿2016/08/17 14:36

flied_onion

総合スコア2604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問