SQL データベースを使用する場合、RDBMS エンジンはORDER BY句を使用して、行を動的にソートすることができます。この時、ISAM ファイルで要求されているインデックスを定義する必要はありません。プログラムでのソートの定義方法は変わりませんが、メインソースと結合テーブルの一部として全てのカラムがソートされると、RDBMSでソートできるようになります。RDBMS でソートすることができない場合、Magic xpaではMAGIC.INI ファイルで定義されているソートデータベース内の一時ファイルを使用して行をソートします。
タスクでのソート方法はこのテーブルの仮想インデックスの定義方法と同じです。さらに、このソート方法は追加仮想インデックスを定義する必要性を最小限に抑え、エンドユーザからのインデックスの要求を満たします。
ソートを定義すると、Magic xpaではタスクのSELECT文を再発行します。そして次の条件が満たされていると、インデックスに準拠して生成されたORDER BY 句をソートで使用されるカラム名に置き換えます。
ソートセグメントは全てメインソース、または内部リンク、外部リンクテーブル中の一部でなければなりません。それ以外の場合、RDBMS によるソート機能は使用されず、一時ソートファイルが作成されます。
全てのソートセグメントは、RDBMS でソート可能なデータ型であること。例えば、MS-SQL Server ではBIT データ型をソートすることはできません。そのため、データベース内でBIT にマッピングされるソートセグメントを使用してソートする時には、RDBMS によるソート機能は使用されず、MAGIC.INI ファイルで定義されたソートデータベースを使った一時ソートテーブルを作成します。
Magic xpaでは、常にユニークなORDER BY句が必要となります。ORDER BY句がユニークであると指定しない場合や、Magic xpaでソートセグメントの組み合わせがユニークであると決定できない場合、位置インデックスセグメントがORDER BY 句に追加されます。さらに、ソートで選択されるカラムがメインソースや結合テーブルのカラムでない場合、Magic xpaは一時的なソートファイルを作成します。
最終的にORDER BY句となるソートを定義すると、RDBMSオプティマイザはインデックスを使用せずにクエリを実行しますが、さらに効率的な方法でクエリを実行するために異なるアクセス方法を使用した方が良い場合があります。