1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

面接での技術質問の反省②

Posted at

#はじめに
昨日の投稿の続きです。

##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について、触らず嫌いだったかもしれません。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?