
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で質問しましょう!
似たような質問が見つかりました
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- 英語 The waiting time between stages is in the order of 2 2023/05/14 09:08
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- CPU・メモリ・マザーボード SSDはなくても正常でしょうか 3 2022/07/05 15:58
- MySQL select *, `人口(男)`AND`人口(女)`/'面積' as '人口密度'FROM … 1 2023/07/03 21:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INSERT後の並び替え
-
GROUP BY使用時のソートについて
-
IE6にして、勝手にブックマーク...
-
オープンオフィス
-
取り出したデータのソート方法
-
エクセルの並べ替えについて
-
Accessのソートについて
-
付録CDなどの動画をWMPで...
-
ソートの仕方
-
エクセルでのソートについて
-
Excl並び替えマクロについて
-
末数字でソート
-
ファイルメーカー5であ行、か行...
-
アーティスト一覧で正しい位置...
-
Excelの並び替え(文字数と画数...
-
ソートした文字を別セルに表示する
-
外付けHDを付け替える毎にフォ...
-
ハイフンの入ったデータの並べ替え
-
「 0 」 を除いて ( 無視...
-
csvファイルの文字化け
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードの登録順がおかしい
-
ファイルの漢数字の順番につい...
-
並べ替えについて
-
エクセル、並び替え正しくソー...
-
ファイルメーカーでソート後の...
-
1の行を固定した上でVBAを用い...
-
テーブルレーコードをソートし...
-
リストボックス内を昇順並べる方法
-
月末日のみソートしたい
-
accessでDISTINCT 句と矛盾
-
Excelのオートフィルタでソート...
-
SQLデータベースの処理
-
上から何番目か。
-
ソート(PL/SQL)
-
コンボボックスのソートについて
-
ハイフンの入ったデータの並べ替え
-
OracleとAccessの出力順の違い
-
MySQLで都道府県順にソート
-
並び替え
-
タイトル行を固定してソートしたい
おすすめ情報