ソート処理の処理時間を早く、メモリ消費を抑えたい - sort プロシジャ noequals オプション (非安定ソート) - SAS
mergeステートメントの前処理としてお馴染みの sort プロシジャについて、noequals オプションのご紹介です。 noequals オプションを付けることで、非安定ソートを行うことができます。デフォルトの設定では equals で、安定ソートが設定されています。noequals の最大のメリットは、デフォルトの equals と比べて、 CPU時間が短く、メモリが少なくすむことです! さて、そもそも、安定ソートとはなんでしょう。安定ソートとは、Wikipedia先生から引用しますと、 安定ソート(あんていソート、stable sort)とは、ソート(並び替え)のアルゴリズムのうち、同等なデータのソート前の順序が、ソート後も保存されるものをいう。つまり、ソート途中の各状態において、常に順位の位置関係を保っていることをいう。 たとえば、学生番号順に整列済みの学生データを、テストの点数順で安定ソートを用いて並べ替えたとき、ソート後のデータにおいて、同じ点数の学生は学生番号順で並ぶようになっている。 安定ソート | Wikipedia という感じです。ソートする前の並び順が維持されるのが安定ソート。ソートする前の並び順が無視されるのが非安定ソートです。 Wikipedia の例を元にサンプルデータを作ってみます。データは学籍番号順に並んでいます。 学籍番号 点数 001 80 002 90 003 80 004 100 005 90 006 80 上記のサンプルデータを点数で安定ソートしてみます。学籍番号の順番は維持されています。 学籍番号 点数 001 80 003 80 006 80 002 90 005 90 004 100 非安定ソートしてみると、点数の順に並んでいますが、安定ソートと並び順が異なります。(例のために並び順が異なるようにしていますが、一致することもあります。) 学籍番号 点数 001 80 006 80 003 80 005 90 002 90 004 100 proc sort noequals テストコード SASプログ...