検索条件が空を返す時にどうしてSQLを発行してんの?
User.where(id: [])
というコードを実行すると SELECT COUNT(*) FROM users WHERE 1=0
という空を返却するSQLを発行している。必要なくね?というissue。
本issueに書かれた内容を要約すると、
SQLはselect ... where in ()
というinの中身が空欄は不正なSQLになるから、エラーにならないように空結果を返すために1=0
で検索しているけど、どうせ空配列を返すことはクエリする前から決まっているんだから内部でnone
メソッドを使えばいいのに。
まーでも、ここを最適化するよりもクエリをすることで実装がシンプルになるならこれでいいんじゃないの。
みたいな感じで、コミッターが登場することもなく答えのないままオープンになっている。
おしまい。