#はじめに
昨日の投稿の続きです。
##ActiveRecodeによるSQL文
ActiveRecodeのallによってどのようなSQL文が生成されているか、ターミナルに表示されるログで確かめてみました。
def show
user = User.all
end
上記のように、コントローラーで記述されていたとすると…
SELECT `users`.* FROM `users`
こんな感じでSQL文が生成されていました。
FROM
の後にあるテーブル名から、
SELECT
の後にあるデータを取ってきた。
と読み取れます。
*
は全てということ。
つまり、
「usersテーブルから、そのテーブルにある情報、
まるっとぜーんぶもってきたよ!」
と、いうことです。
あ、そりゃ面接官のエンジニアも、質問したくなるわけだな…
とってくる情報に無駄が多すぎる!!
しかも、その理由を答えられなかったし…
勉強不足過ぎる。
テーブルにある全ての情報というと、
昨日のAmazonの例で言うと、
全ての商品の名前、写真、出品している店舗、値段、出品した日時、大きさ…
挙げたら、霧がないくらい…
そのページで扱わないなら、最小限でいいですよね。
##とりあえずの解決方法
話を戻すと、
ユーザー情報の名前だけが欲しい場合は、
def show
user = User.select(:name)
end
all
ではなく、select(:カラム名)
とすれば、いい!!!
##最後に
現場では、あまりall
は使わないのかなぁ…
必要な情報だけとってくる方が、そりゃいいよな…
となると、Railsを通して、データベースを扱っている以上、
SQlの知識って、とっても大事なのでは!?
ちゃんと勉強して、せめて読めるようになろう!
SQLについて、触らず嫌いだったかもしれません。