背景
下記の様に各ユーザの購入履歴を記録するテーブルがあります。
この場合に、特定のユーザ達の購入履歴一覧を取得するという事がしたくなりましたが、
その場合のSQLの投げ方に疑問を感じたため質問させていただきました。
具体的なテーブル
今回は、このような、ユーザ毎の購入履歴が保存されるようなテーブルを想定しています。
sql
1| purchase | CREATE TABLE `purchase` ( 2 `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 3 `user_id` varchar(64) NOT NULL, 4 `goods_id` int(10) unsigned NOT NULL, 5 `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 6 `created_at` datetime NOT NULL, 7 PRIMARY KEY (`id`), 8 KEY `user_id` (`user_id`) 9) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
質問
このテーブルから、冒頭に述べたような 特定のユーザ達の購入履歴を取得する
場合、
次のようなA(where句にいっきに指定)と、B(SQLを分けて複数回リクエスト)の2種類を思いつきました。
この場合、どちらの方がDBにかかる負荷を抑えられるのでしょうか。
(そもそも、SQLの長さに上限があり、Aの場合でユーザが大量にいるとSQLが発行されなくなるという話を聞いた事がある気も・・)
A. SELECT user_id, goods_id from purchase where user_id in ('takuya', 'masahiro', 'tuyoshi', 'shingo', .....)
B. 下記SQLをユーザ数分叩く
SELECT user_id, goods_id from purchase where user_id = 'takuya'
SELECT user_id, goods_id from purchase where user_id = 'masahiro'
SELECT user_id, goods_id from purchase where user_id = 'tuyoshi'
...

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/25 01:32