- - PR -
検索条件によって異なるビューの指定方法
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-09-25 10:38
いつもお世話になります。
あるビューから条件を指定してデータを検索することを考えています。 例えば、VIEW_Aはマスタ番号(第一ソートキー)、マスタグループ(第二ソートキー)、マスタテキスト、といった項目を持っているとします。 検索条件にマスタ番号を指定した場合には、VIEW_Aの第一ソートキーでの検索の為、比較的処理速度も速いと思われるのですが、検索条件にマスタグループを指定した場合には第二ソートキーで検索する為に処理速度が遅くならないか心配です。 このように検索キーが場合によって変化する場合、それぞれの検索キー用のビューを作成し、条件ごとにビューを読み分ける方が効率的なのでしょうか?しかし検索キーが多数ある場合には非常に開発にロスが発生してしまいます。 検索条件が複数考えられる場合、どういった方法でビューからデータを抽出のが最も効率的なのでしょうか? | ||||||||
|
投稿日時: 2007-09-25 11:24
まず、DBMS を明示した方が良いです。次に、速度は心配するものではなく計測するものです。
第一ソートキー、第二ソートキーというものはよく知りませんが、選択操作に使用する列にインデックスを作れば速度は変わります。 それをせずにビューだけ増やしていっても速度が速くなるとは思えませんが、具体的にはどういった方法なのでしょうか? _________________ 囚人のジレンマな日々 | ||||||||
|
投稿日時: 2007-09-25 11:46
オラクルなら実行計画をみれば、検索パスがわかる。
それを見て判断しましょう。 | ||||||||
|
投稿日時: 2007-09-25 16:35
ご返答ありがとうございます。
SQL Server 2000にて開発しています。 また、第一ソートキーなどと言っているのはビューの設計になります。 検索結果出力までの時間はまだ計測できていませんが、前回の書き込みについて補足させていただきます。 例えばマスタ番号を検索するストアドプロシージャがあった場合、ストアドプロシージャで使用するビューは、マスタ番号別のビュー@とマスタグループ別のビューAでは@を使用する方がAを使用するより処理が早いのでは?と考えています。 その為、検索内容ごとにビューを読み分ける方が良いのかと疑問が出ました。 | ||||||||
|
投稿日時: 2007-09-25 17:13
「マスタ番号別のビュー」「マスタグループ別のビュー」というのがよく分からないのですが、ビューに順序なんてありませんよね。 「マスタ番号別のビュー」「マスタグループ別のビュー」の具体的な定義ってどんなのでしょうか?(Group by してるって事かな?) _________________ 囚人のジレンマな日々 | ||||||||
|
投稿日時: 2007-09-25 17:29
引用-------------------------------
「マスタ番号別のビュー」「マスタグループ別のビュー」というのがよく分からないのですが、ビューに順序なんてありませんよね。 「マスタ番号別のビュー」「マスタグループ別のビュー」の具体的な定義ってどんなのでしょうか?(Group by してるって事かな?) ---------------------------------- 「マスタ番号別のビュー」とは、ビューの一番左にマスタ番号を配置し昇順ソートを行なっているビューで、同様に、 「マスタグループ別のビュー」は、ビューの一番左にマスタグループを配置し昇順ソートを行なっているビューです。 GROUP BY については行なっていません。 | ||||||||
|
投稿日時: 2007-09-25 18:34
CREATE VIEW で作るビューの事を言っているんですよね?
だとしたら、完全にビューの認識を間違っています。 さっきも言った通り、ビューに「順序」なんてありません。「ビューの一番左にマスタ番号を配置し昇順ソート」なんてできましたか?私の記憶では ORDER BY できなかったと思いますが。 そして、「ソート」というのはレコードの選択が終わってからやるものです。よって並び順が検索の速度に影響することはありません。最初の回答で述べたとおりインデックスを作ってください。 とりあえず、実行プランを見てどのように検索するのかを勉強して、その前に RDBMS についてもう少し勉強したほうがよいです。 _________________ 囚人のジレンマな日々 | ||||||||
|
投稿日時: 2007-09-25 19:48
他のRDBMSではその通りだと思いますが、SQL Server 2000では、Viewにorder byを指定することは可能です。 ただし2005では、order byを指定しても並び替えが行われなくなったようです。 回避策は以下のURLを参照してください。 http://support.microsoft.com/kb/926292/en
この点については同感です。 |