2006年11月11日

恥ずかしながら、最近TOP句を知りました・・・

テーブルAをcolBでソートして、先頭の10件を取得するクエリ
SELECT TOP 10 *
  FROM A
 ORDER BY colB;

ここでふと疑問が・・・
Topが先か、Orderが先か。

心配になったので実行計画をとってみると、
「Top N Sort」っていう計画になっていて、
OrderしてからTopされてました。

うろ覚えですが、確かOracleSqlだと下記のようにしないと
正しい結果にならなかったような気が・・・
SELECT *
  FROM (SELECT * FROM A ORDER BY colB) ORDER_DATA
 WHERE ROWNUM <= 10;


何気にTOP句ってすごいなぁと思った今日この頃でした^^;

posted @ 0:35 | Feedback (6)