Hard work by INTERNET

ベンチャーで働くひとりぼっちWEB開発者が頑張るブログ

検索条件が空を返す時にどうしてSQLを発行してんの?

Why do it need to execute SQL when ActiveRecord query conditions is empty array? · Issue #35307 · rails/rails · GitHub

User.where(id: [])

というコードを実行すると SELECT COUNT(*) FROM users WHERE 1=0という空を返却するSQLを発行している。必要なくね?というissue。

本issueに書かれた内容を要約すると、 SQLselect ... where in ()というinの中身が空欄は不正なSQLになるから、エラーにならないように空結果を返すために1=0で検索しているけど、どうせ空配列を返すことはクエリする前から決まっているんだから内部でnoneメソッドを使えばいいのに。
まーでも、ここを最適化するよりもクエリをすることで実装がシンプルになるならこれでいいんじゃないの。

みたいな感じで、コミッターが登場することもなく答えのないままオープンになっている。

おしまい。