(速度はおいておいて、論理条件だけみたら)parents.deleted_at IS NULL OR children.deleted_at IS NULL で検索したかった話なのかな?
parents側の論理削除はここでは無関係だね。LEFT JOINする右側テーブルで論理削除されたレコードをないものとしたければ、JOIN時に条件つけろということ。
これハマったときあったなあ。理想的には論理削除なしがいいけど、仕方ないときはビュー作るかな。
そもそも、where句の書き方がおかしいだけ。性能はオプティマイザ次第だが論理削除で isnull を使う設計もおかしい。
WHERE句っていう文法の問題じゃなくて、子テーブルのフィルタリングとJOIN演算の適用順序を意識する必要がある、という話
個人的には、論理削除のように、毎回必ず同じwhere条件をつけるものは、テーブルを分けるように設計してる。アーキテクトとしては、いつか誰かがやらかす可能性のある設計はできるだけ潰しておきたいところ。
具体的なケースの具体的なクエリが無いのでアレだが、where 区でもnot exists ちゃんと書けば済む話では? 論理削除チェックにnull使ってるのも原因か。普通にflagならこんなややこしいことにならない。
not existsを使うようになって減ったけど、よくやる。よくSQL書いてるときは問題ないんだけど、書いてないと忘れる。
LeftJoinだと親があって子がないレコードは見えるけど論理削除した子供を持った親は見えない、という話か。Join条件はできる限りJoinに書く派なのであえて意識したことはなかったな。
IS NULLでしか論理削除が判定できない データベースの設計がおかしいのでは?
Viewを使えみたいな話かと思ったら、そもそも論理削除に限った話じゃなかった。
論理削除は窓から捨てろ。話はそれからだ
そりゃ、LEFT JOINなのにchildrenテーブルをparentsの抽出条件に入れちゃダメ、という話なのでは。「不具合」というより仕様というか。「親テーブルの絞り込みはWHERE句で大丈夫です」
Gemini "「初学者向け:SQLの評価順序におけるハマりどころ」として書き直すべき内容ですね" と言う感じで社内向けには良い注意喚起だけど公開する内容としては技術ブランディング的にマイナスではと心配に…他人事なが
みんなだいすきゴミ箱機能。
論理削除の絞り込みはWHERE句でやるな
(速度はおいておいて、論理条件だけみたら)parents.deleted_at IS NULL OR children.deleted_at IS NULL で検索したかった話なのかな?
parents側の論理削除はここでは無関係だね。LEFT JOINする右側テーブルで論理削除されたレコードをないものとしたければ、JOIN時に条件つけろということ。
これハマったときあったなあ。理想的には論理削除なしがいいけど、仕方ないときはビュー作るかな。
そもそも、where句の書き方がおかしいだけ。性能はオプティマイザ次第だが論理削除で isnull を使う設計もおかしい。
WHERE句っていう文法の問題じゃなくて、子テーブルのフィルタリングとJOIN演算の適用順序を意識する必要がある、という話
個人的には、論理削除のように、毎回必ず同じwhere条件をつけるものは、テーブルを分けるように設計してる。アーキテクトとしては、いつか誰かがやらかす可能性のある設計はできるだけ潰しておきたいところ。
具体的なケースの具体的なクエリが無いのでアレだが、where 区でもnot exists ちゃんと書けば済む話では? 論理削除チェックにnull使ってるのも原因か。普通にflagならこんなややこしいことにならない。
not existsを使うようになって減ったけど、よくやる。よくSQL書いてるときは問題ないんだけど、書いてないと忘れる。
LeftJoinだと親があって子がないレコードは見えるけど論理削除した子供を持った親は見えない、という話か。Join条件はできる限りJoinに書く派なのであえて意識したことはなかったな。
IS NULLでしか論理削除が判定できない データベースの設計がおかしいのでは?
Viewを使えみたいな話かと思ったら、そもそも論理削除に限った話じゃなかった。
論理削除は窓から捨てろ。話はそれからだ
そりゃ、LEFT JOINなのにchildrenテーブルをparentsの抽出条件に入れちゃダメ、という話なのでは。「不具合」というより仕様というか。「親テーブルの絞り込みはWHERE句で大丈夫です」
Gemini "「初学者向け:SQLの評価順序におけるハマりどころ」として書き直すべき内容ですね" と言う感じで社内向けには良い注意喚起だけど公開する内容としては技術ブランディング的にマイナスではと心配に…他人事なが
みんなだいすきゴミ箱機能。