No.3ベストアンサー
- 回答日時:
長い間、標準SQL及び多くのRDBMSでは、「ORDER BYで指定する項目は、SELECTの選択リストで指定した項目でなければならない」という制限がありました。
「SELECTの選択リストで指定していない項目でも、ORDER BY指定が可能」となったのは、比較的、最近のことです。
現在でも、「ORDER BYで式を指定」した場合などで、RDBMSにより、最適なアクセス計画を生成できないといった問題があります。
記述したSQLで、性能が出せるかどうかは、使用しているRDBMS、バージョンにより、大きな違いが生じます。
ORDER BYに関しては、メモリ消費よりは、インデクスを有効活用し、ソートを抑止できるかどうかが、利用者側にはっきり見えるところです。
自分で使うRDBMS及びバージョンで、どういうアクセス計画が生成されるかという、分析は必須です。
かなり専門的なレスがつきました。ありがとうございます。
>「SELECTの選択リストで指定していない項目でも、ORDER BY指定が可能」となったのは、比較的、最近
この部分を具体的に教えてください。10年前からRDBを使用していますが
そのような制限に出会った記憶が無いので…。例えばOracle7ではどうだったか
SQLServerではいつ頃から可能になったか、等の情報があると嬉しいです。
>ORDER BYに関しては、メモリ消費よりは、インデクスを有効活用し、
仰るとおりです。ただ、取得件数が少ないと問題なく、逆に多いと
システム・エラーとなっている事象が発生している以上、メモリ上の
問題が発生しているのでは?と疑っているわけです。かならずしも
インデックスの付いた列をソートできるとは限りませんし…。
例えばSELECTに記述した方が、ソート領域を節約できる可能性があるとか
そういう情報に興味があります。個人的には「そんなはずは…」と
思っています。そういうSQLチューニングもあまり聞きませんし。
No.5
- 回答日時:
RDBMSは、DB2でしょうか?
ここでは、DB2利用者の書込み&閲覧はそれ程多くなく、内容的にも有用な情報を答えられる人はいないように感じられます。
IBMとのサポート契約は、どうなっているのでしょうか?SEやRDBMS開発部署に、確認できないのでしょうか?
以下のようなサイトで、情報を入手すれば、あるいは有用な情報を得られるかも知れません。
http://www-06.ibm.com/jp/software/data/developer …
http://www-128.ibm.com/developerworks/forums/ind …
回答ありがとうございます。IBMへの情報提供を求める動きは既にありますが
一般論として、ORDER BYの項目をSELECT句に書くのがメモリ効率上、あるいは
パフォーマンス上、何らかのメリットがあるという見解が存在するか?
ということを知りたいと思って質問させていただきました。
個人的な見解でも結構ですのでお聞かせ願えれば幸いです。
No.4
- 回答日時:
#3です。
各RDBMSにより、標準SQLになっていなくても、独自機能として早い時期から実装している場合もあるので、各RDBMSでの実装時期は、把握していません。
逆に特定のRDBMSの仕様が、のちに標準SQLに取り入れられるということも、少なくありません。
>取得件数が少ないと問題なく、逆に多いとシステム・エラーとなっている事象が発生している
インデクスによるソート抑止ができない場合、作業用のメモリやファイルを使うことになるので、多量件数のソートが発生すると、RDBMSやOSでエラーになってしまうことは何ら不思議な話ではありません。
ちなみに、ソートは「ORDER BY」だけでなく、「GROUP BY」や「DISTINCT」、インデクスの定義(または、再作成)といった操作でも発生します。
>インデックスの付いた列をソートできるとは限りませんし…。
大規模なシステムでは、検索条件での絞り込みに加え、「ソート抑止」できるようにインデクスを設計します。
回答ありがとうございます。
> 各RDBMSでの実装時期は、把握していません。
わかりました。
>インデクスによるソート抑止ができない場合、作業用のメモリやファイルを使うことになるので
仰る通りです。しかしSELECT句に書くとエラーを回避できる現象に遭遇しています。
その現象は理解できる現象なのか、それとも単なるバグに近い現象なのかを
知りたいと思っています。
>大規模なシステムでは、検索条件での絞り込みに加え、「ソート抑止」できるようにインデクスを設計します。
仰るとおりです。しかし理想と現実にかなりギャップがあるのは致し方ない事実です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイルの漢数字の順番につい...
-
並べ替えについて
-
月末日のみソートしたい
-
エクセルの並べ替えがうまくい...
-
Selectした時のレコードの取得順
-
エクセルのソート機能について
-
SQLのORDERBY句について質問です。
-
エクセルの縦列のソートできま...
-
ハイフンの入ったデータの並べ替え
-
エクセル、並び替え正しくソー...
-
accessでDISTINCT 句と矛盾
-
検索結果を指定件数ずつ抽出表...
-
@以下をソートしたい
-
エクセルのソートがうまくいかない
-
1の行を固定した上でVBAを用い...
-
基本的な質問です。フロッピー...
-
INNER JOINについて
-
ソートのアルゴリズム等はいつ...
-
SQLローダーCSV取込で、囲み文...
-
count関数の値をwhere句で使用...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイルの漢数字の順番につい...
-
並べ替えについて
-
レコードの登録順がおかしい
-
1の行を固定した上でVBAを用い...
-
テーブルレーコードをソートし...
-
リストボックス内を昇順並べる方法
-
エクセル、並び替え正しくソー...
-
コンボボックスのソートについて
-
月末日のみソートしたい
-
ハイフンの入ったデータの並べ替え
-
accessでDISTINCT 句と矛盾
-
アクセスに関して。クエリの並...
-
都道府県順、北からソートした...
-
SQLで曜日のソートを月火水木金...
-
数字と漢字が混じった日付デー...
-
Excelのオートフィルタでソート...
-
Selectした時のレコードの取得順
-
ファイルメーカーでソート後の...
-
excel:一番上の行がソートでき...
-
OracleとAccessの出力順の違い
おすすめ情報