Slide 17
Slide 17 text
サブクエリの使い方が悪い
①サブクエリの中でテーブル全体を集計して結合
SELECT
tbl_staff.staff_name
, subtable.price_sum
FROM
tbl_staff JOIN (
SELECT
staff_id
, SUM(used_price) as price_sum
FROM
tbl_price_index
GROUP BY
staff_id
) subtable
ON tbl_staff.id = subtable.staff_id
WHERE
tbl_staff.id = 1
②サブクエリの中で検索条件を指定して集計したあとに結合
SELECT
tbl_staff.staff_name
, subtable.price_sum
FROM
tbl_staff JOIN (
SELECT
staff_id
, SUM(used_price) as price_sum
FROM
tbl_price_index
WHERE
staff_id = 1
GROUP BY
staff_id
) subtable
ON tbl_staff.id = subtable.staff_id
WHERE
tbl_staff.id = 1
インデックスが有効でも、サブクエリを使ってJOINする場合、書き方によっては全検索が走ることがあります。
下記は2つとも、費用テーブルの中を社員ごとに集計し、社員ID「1」の結果だけを表示するSQLです。 結果 →
サブクエリ
price_sum
staff_name
61394354950
城島 茂
サブクエリ