FC2ブログ

記事一覧

暗黙ソートについて | SQL

TOP > SQL

暗黙ソート

・Group By や Distinct によりデータ抽出する場合に Order By を指定しなくても キー項目順でソートされる機能のこと。

---------------------------------------------------------
SQL文
     SELECT Key1
           ,Key2
           ,[Name]
           ,SUM(Qty) AS Summary
      FROM  TABLE
     WHERE  Key1 >= 0 AND Key1 <= 99999999
   GROUP BY Key1
           ,[Name]
   --/*ORDER BY Key1 --省略しても実行結果が変わらない
   --      ,Key2
   --      ,Name*/

実行結果
---------------------------------------------------------
Key1 Key2 Name Summary
---------------------------------------------------------
1    1    test11    1
1    2    test12    4
2    1    test21    2
2    2    test22    3
3    1    test31    5
3    2    test32    2
---------------------------------------------------------

データベースのバージョンや種類により暗黙ソートがかかるかどうかは分かれています。


【暗黙ソートがかかる】
SQL Anywhere 8 → Where 区の条件に index scan がかかるようにすると暗黙ソートされる。
Oracle 9i


【暗黙ソートがかからない】
SQL Anywhere 11
Oracle10gR2


基本的に「order by区なしでは順序保証されない」と明記されていることが多いようです。

SQL Server では 「primary key」指定時に、「order by」なしでも順序保証しているようです。
ですが、基本的にOrderBy区を省略してSQL文を発行してはいけないと思います。
他の人のプログラムを修正したときのトラップのうちの一つですね。


コメント

コメントの投稿

※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。

 入力されていないコメントには返信しませんのであらかじめご了承くださいませ。

※ニックネームでも良いので必ずご入力ください。

    

※必ずご入力ください。

    
    

※必ずご入力ください。

※技術的な質問には環境やエラーについて正確かつ詳細にお教えください。

・正確なエラーの内容

・Windowsのバージョン番号

・Visual Studioのバージョン

・機器の型番

・アプリやソフトのバージョン

    

カテゴリ別記事一覧

広告

プロフィール

石河 純


著者名 :石河 純
自己紹介:素人上がりのIT技術者。趣味は卓球・車・ボウリング

IT関連の知識はざっくりとこんな感じです。
【OS関連】
WindowsServer: 2012/2008R2/2003/2000/NT4
Windows: 10/8/7/XP/2000/me/NT4/98
Linux: CentOS RedHatLinux9
Mac: macOS Sierra 10.12 / OSX Lion 10.7.5 / OSX Snow Leopard 10.6.8
【言語・データベース】
VB.net ASP.NET C#.net Java VBA
Xamarin.Forms
Oracle10g SQLServer2008R2 SQLAnywhere8/11/16
ActiveReport CrystalReport ReportNet(IBM)
【ネットワーク関連】
CCNP シスコ技術者認定
Cisco Catalyst シリーズ
Yamaha RTXシリーズ
FireWall関連
【WEB関連】
SEO SEM CSS IIS6/7 apache2

休みの日は卓球をやっています。
現在、卓球用品通販ショップは休業中です。