- - PR -
Indexをつけるポイントについて
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2006-11-29 05:55
現在、データベースにデータウェアハウスのようなものをSQL2005に構築しましたが、
パフォーマンス(主にSELECT文)を あげるためINDEXをつけるかどうかを検討してます。 あるDBの管理者によるとレコード数で10万をこえるレベルで初めて検討すると いってました。 でも当然、アプリケーションで その10万を超えるテーブルとJOINするテーブルに対しても、たとえそのレコード数が数百でもINDEXをつけたほうがいいのでしょうか? たとえば COLUMN C1、A2,A3、A4、A5 の50万レコードあるテーブルTable-A と COLUMN C1,B2,B3、B4,B5 のレコード数が 500程度のテーブル Table-B に対して update table-A set A2=B2, A3='Y' where table-A.C1=table-B.C1 といったクエリーや select A.*, B.B4, B.B5 from table-A as A, table-B as B where A.C1=B.C1 といったクエリーが頻繁に実行されることが予想された場合、 Table-A, Table-BともINDEXをして キーとして たとえば、Table-Aでは C1, A2, A3のといった順でコードとなるものに対して INDEXしていき たとえば、Table-Bでもたとえ数が少なくても C1, B4, B5のといった順でコードとなるものに対して INDEXをつけたほうがパフォーマンス上、いいのでしょうか? テーブルに対するIndexの有無をつける判断と よく実行されるSQLからINDEXのつけかたの定型的なやりかたなどが ありましたら アドバイスをいただければ幸いです | ||||
|
投稿日時: 2006-11-29 09:48
るぱんです。
教科書だそうで。 ここの4章に書いてある。 つなぐ相手には必要ないと思う。 その表に対して10〜15%ぐらいのデータをマッチングするのに 使うものだと思っています。 インデックスを張るとリソースが消費されます。 それが性能劣化につながる可能性も有るので。 それにインデックスの作業って、 設計時には雛形が終わっていて、 開発のSQLが固まった時点で完全に完了するものだと思います。 パフォーマンスって、後からあげるもんでなくて、 基本的に設計で考慮しておくものですよ。 設計で考慮したほうが、圧倒的にパフォーマンスは出ますよ。 [ メッセージ編集済み 編集者: るぱん 編集日時 2006-11-30 23:29 ] | ||||
1
