ISOかANSIか?
現在、業務で作成しているSQLが下記のように作成しているのですが、Inner Join等を書いてある場合と、書いていない場合があり、どちらが良いのか迷ったので質問させて頂きました。
恥ずかしながら、ISOかANSIという名称も先程知りました。
また、あまり詳しくないのですが、SQLはoracleから入ったので、自分はパターンAで書いてしまいます。
ポイントとしては、結合部と条件部の切り分け、可読性、可変性、メンテナンス性、作りやすさといったところでしょうか?そこに着眼してみたときに、どちらのパターンが優位なのでしょうか?
- Aパターン
sql
1select 2 テーブルA.カラム1 3 ,テーブルB.カラム2 4from 5 テーブルA 6 ,テーブルB 7where 8 テーブルA.カラム3 = テーブルB.カラム3
- Bパターン
sql
1select 2 テーブルA.カラム1 3 ,テーブルB.カラム2 4from 5 テーブルA 6 inner join テーブルB on テーブルA.カラム3 = テーブルB.カラム3
DB情報
私が普段使用するDBは下記の2つなので、その中ではどのようなものなのか、また、SQL ServerやMySqlでのパターンも知識として知れたらなと思っていますので、ご意見等があればお教えいただきたいです。
- Oracle
- postgres
追記
解答から発生した疑問について追記させて頂きます。
やはり「結合してから絞り込む記述」より「絞り込んでから結合の記述」の方が速度的にも早いのでしょうか?
深く考えたことは無かったのですが、どちらの記述を行ってもSQL解析の時点で最適な方法に変換されると思っているのですが、ど
うなのでしょう?
With句を用いたものや、InnerJoin句内のWhere句で絞り込んだ結果を結合する場合と、そこではWhere句は書かずに結合し、SQL全体として条件を指定して絞り込む場合とで、速度等に影響が及ぶのでしょうか?
漠然とですが、SQLの実行時に最適化されて、結果同じ速度になるかと思っていますが、この認識はあっていますか?

回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/20 05:08