知りたいこと・背景
hogeテーブルの各データ+最終アクセス時間を取得するSQLの書き方で迷っています。
下記のサンプルコードで
②のSQLだと、一度テーブル全体でgroup by するので少しパフォーマンスが悪いのかなと思っています。
②でもidで抽出した結果をgroup by するような記載に変えることができるでしょうか?
他の仕様と設計書との兼ね合いで、②のほうが表現しやすく、②の書き方で統一したいのですが・・・
サンプルコード
t_hogeテーブル
id | name | address |
---|---|---|
1 | fizz | 東京・・・ |
1 | buzz | 神奈川・・・ |
t_acessテーブル
id | access_date |
---|---|
1 | 2019/12/05 14:00:00 |
1 | 2019/12/05 14:10:00 |
2 | 2019/12/05 15:11:00 |
①SELECTで副問合せするSQL
SQL
1select 2 t_hoge.* 3 ,(select max(access_date) from t_access where id = t_hoge.id) last_access 4from t_hoge
②FROMで副問合せするSQL
SQL
1select 2 t_hoge.* 3 ,acc.last_access 4from t_hoge 5left join ( 6 select id, max(access_date) last_access from t_access group by id 7 ) acc on acc.id = t_hoge.id
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/05 10:10
2019/12/05 10:35
2019/12/05 12:01
2019/12/05 12:05