外部結合・内部結合・ソートを含んだクエリのインデックスの作り方をご指導ください C#2010 , SQL SERVER2008でアプリ開発しています。

外部結合・内部結合・ソートを含んだクエリのインデックスの作り方をご指導ください C#2010 , SQL SERVER2008でアプリ開発しています。 参考書等に例として挙げてある簡単な事例であれば、なんとなく出来るのですが、以下のように規模が大きくなると どうすればいいか分かりません。 DBの動作の理解が甘いためだと思います。 以下のクエリで理解をしたいと思います。 ご指導いただければ幸いです。 select * From tableA as A inner join tableB as B on A.col1 = B.col1 and A.col2= B.col2 left join tableC as C on A.col1 = C.col1 and A.col2 = C.col2 left join tableD as D on A.col3 = D.col3 Where B.col4 = 1 Order by B.col5

アプリ開発4,303閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

これはどのDBでも言えますが、基本は結合子をindex化すること。index-indexが結局は速いので。 ですから、 tableA→col1/col2の連結インデックス,col3のインデックス tableB→col1/clo2の連結インデックス,col4のインデックス tableC→col1/col2の連結インデックス tableD→col3のインデックス というのが基準になりますが、実際にはこんなにindexを張ることはないでしょう。 各テーブルのprimary keyがcol1,col2になっていれば、連結インデックスは不要ですし、それ以外に必要なindexは、レコードサイズにもよりますが、恐らくBのcol4。 ここでindexによってtableBが大幅に削れれば、自動的にtableAも大幅に削れます。 tableDはcol3にindexを張っていないとシーケンススキャンに落ちるかも知れませんが、データ量が多くないなら機にしなくてもいいはずです。

ThanksImg質問者からのお礼コメント

ありがとうございます レベルアップにつながりそうです 基礎的なDBの動作を再確認してみます

お礼日時:2013/7/25 23:10