見出し画像

読みやすいクエリを書くポイント

改行とインデントを利用する

短いクエリでも長いクエリでも改行とインデントを利用するようにしましょう。短いクエリだからと言って一行で書かれたクエリはかなり読みづらいです。下記にNGの例を書いていますが、一行で書かれるとどこまでがSELECT句でどこからがFROM句なのかが読みづらいです。WEHER句があればなおさら読みづらくなってしまいます。また、適切なインデントを付けることも読みやすいクエリを書く上で重要になります。適切なインデントを付けることで、どれが予約語なのかがはっきりして読みやすくなります

NG_1

SELECT user_id, name, weight, height FROM main_table

NG_2

SELECT
user_id
, name
, weight
, height
FROM
main_table

OK

SELECT
  user_id
  , name
  , weight
  , height
FROM
  main_table

SELECT句では必ずカラム毎に改行する

SELECTの列の数を数えやすくするためにカラム毎に改行するようにしましょう。また、ASがどこにかかっているのかを読みやすくするという理由もあります。SELECTで改行無し&ASがあるとなかなか読みづらいです。

NG

SELECT
  user_id as id, name, body_weight as weight, height
FROM
  main_table

OK

SELECT
  user_id as id
  , name
  , body_weight as weight
  , height
FROM
  main_table

AND, ORは先頭に書き、基本的に1行1条件で書く

AND, ORが先頭に書かれていることで条件の数がわかりやすくなります。また、行を短くすることで読みやすくなります。1行が長いと読みにくいです。条件の数はいくつなのか・どのような条件なのかという情報はデータを抽出するうえで重要になってくると思います。WHERE句でAND・ORを利用する際は先頭に書いたほうが良いかなと考えています。

NG

SELECT
  user_id 
  , name
  , weight
  , height
FROM
  main_table
WHERE
  weight >= 50 and height >= 170 and name = '三笘'

OK

SELECT
  user_id 
  , name
  , weight
  , height
FROM
  main_table
WHERE
  weight >= 50
  and height >= 170
  and name = '三笘'

1つのカラムに複数の条件にするときはINでまとめる

ORを使って1つのカラムに複数の条件を書くと読みづらくなってしまいます。NGの書き方だとぱっと見た感じだと条件が3つのカラムに対して行っているように見えてしまう可能性があります。OKの書き方であれば、name列で絞っているというのがわかりやすくなると思います。

SELECT
  user_id
  , name
  , weight
  , height
FROM
  main_table
WHERE
  name = '三笘'
  or name = '南野'
  or name = '堂安'

OK

SELECT
  user_id
  , name
  , weight
  , height
FROM
  main_table
WHERE
  name in ('三笘', '南野', '堂安')

この記事が気に入ったらサポートをしてみませんか?