高機能・高精度・高速・SQL整形…今度のSQL整形は爆速ダゼ!!
SQL開発環境(ツール)の一ジャンルとしてSQL整形という機能があります。 A5:SQL Mk-2でもこれまで、SQL整形機能がありました。これまでも他の同種のSQL整形ツールと比べても高速かつ高機能だったと自負しているのですが、本日公開した Version 2.3 beta 25ではさらに空白の取り扱い(付加・除去)について整形ルールを見直して、より高精度なSQLを出力できるようにしました。目標は「SQLのコードレビューをしてもそのまま通れるSQL」です。 また高速性についても、これまで、通常のSQL整形はかなり高速だったのですが、むしろ複数行から1行への整形(SQLを1行にする)は遅かったのでデータ構造を見直し、かなりの高速化を達成しました。 100KBや、1MBほどの整形を他のSQL整形ツールと比較するとその高速性が確認できると思います。他のSQL専用ツールと比較して、数倍から数十倍の速度差が付くこともあります。(まあ、そんなに大きなSQLはないでしょうけどね。でも一度Hibernateの自動生成した、50KBのSQL(しかも1行)を見たことがあります。)http://www.wind.sannet.ne.jp/m_matsu/developer/a5m2/beta/index.htmlSQL整形例-整形前-----------------------------1行コメントselect distinct a . * -- 1行コメント,func1(a . aaa+1*2*3/4),"a"."aaa"||'aaa'+1,func2(func3( 123 )),( 1+( 2*3 ) ),@@SQLSERVER_ENV as"aaa",case a . bbb when '1' then '一' when '2' then '二' else '' end , case when a. fff = 'ccc' then 'O' else 'X' end,case a .fff when '1' then case when a. ggg = 'ccc' then 'O' else 'X' end when '2' then (case when a. hhh = 'ccc' then 'O' else 'X' end) else '' endfrom TB_NAME a inner join (select カラム1,カラム2,カラム3 from テーブル名 whereカラム1 != カラム2) テ on a.aaa=テ.カラム1where a . aaa=@aaa AND テ . カラム2 = :bbb and a.ccc >= 3 and a.ddd = 3 and A.DDD