以下のクエリでは、どちらがCPU負荷が低いでしょうか?
実行時間の改善のため、①から②にクエリを変更したのですが、
DBサーバのCPU負荷がBにしてから上がったように感じました。
こちら、Bの方が負荷がかかるものであるのか、
また、負荷がかかってしまうのであれば何故負荷がかかるのか、
ご教示頂けませんでしょうか?
【①のクエリ(改修前)】 [レコード件数取得] SELECT COUNT(a.id) FROM A AS a INNER JOIN B AS b ON a.b_id = b.id INNER JOIN C AS c ON a.c_id = c.id WHERE a.b_id = X AND a.c_id = Y AND a.name LIKE '%??%' [レコード取得] SELECT a.*, b.name, c.name FROM A AS a INNER JOIN B AS b ON a.b_id = b.id INNER JOIN C AS c ON a.c_id = c.id WHERE a.b_id = X AND a.c_id = Y AND a.name LIKE '%??%' ORDER BY a.id LIMIT 10
【②のクエリ(改修後)】 [レコード件数取得] SELECT COUNT(a.id) FROM ( SELECT id FROM A AS child WHERE child.b_id = X AND child.c_id = Y AND child.name LIKE '%??%' ) AS a INNER JOIN B AS b ON a.b_id = b.id INNER JOIN C AS c ON a.c_id = c.id [レコード取得] SELECT a.*, b.name, c.name FROM ( SELECT * FROM A AS child WHERE child.b_id = X AND child.c_id = Y AND child.name LIKE '%??%' ) AS a INNER JOIN B AS b ON a.b_id = b.id INNER JOIN C AS c ON a.c_id = c.id ORDER BY a.id LIMIT 10
※Aのテーブルは20万件程
※B、Cのテーブルはそれぞれ100件程
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/05 07:36