書いてて気になることとか。雑なメモ。
他にも思い出したら追記するかも。
自分の勉強不足によるところも大いにあると思われます。。。
マジックナンバー
select * from foo where status = 1;
消臭剤的コメント
select * from foo where status = 1 -- 販売中 ;
- 抽出したい
- or 詳細を隠蔽したい
- or howじゃなくてwhatな名前を付けて操作したい
- いちいち詳細が目に入ってきてしまう
select * from foo where id in ( select id from foo inner join bar on foo.id = bar.foo_id where bar.c = ... and bar.d = ... group by ... ) ;
↓こう書きたくなる
whitelist = ( select id from foo inner join bar on foo.bar_id = bar.id where bar.c = ... and bar.d = ... group by ... ); select * from foo where id in whitelist ;
- 長いSQLは部分を個別にテストしにくい(手作業のくりかえし)
- テストのないコードがレガシーコードならテストのないSQLはレガシーSQLでは?
- そういえば長いSQLの一部をモックに差し替えてテスト、みたいな話も聞かない
- 組み合わせ爆発
- SQL内のロジックの検証
なぜ select区が最初なのか? なぜ最後じゃないのか?(素朴な疑問だけどこれは英語の語順ですよね)
気になってる
SQLアンチパターン | |
Bill Karwin 和田 卓人(監訳) オライリージャパン 2013-01-26 売り上げランキング : 4761 Amazonで詳しく見る by G-Tools |
(2013-05-12 追記)
SQLアンチパターン・レトロスペクティブ - データベース危篤患者の救出 - #sqlap #devlove - Togetter から:
2013-06-02
Sequelのすすめ 〜私がSQLを嫌いな理由〜