こんにちは。ぽこです。
今回は、PHPを使ったSQLの速度改善のための方法をいくつか紹介します。
速度計測
まずは、PHPで速度計測を行います。
$time_start = microtime(true);
// 計測したい処理(SQL実行処理)
$time = microtime(true) - $time_start;
echo "{$time} 秒"; //ログなどに出力してもよいここで出力される時間が、処理にかかった時間となります。
IN句内の副問い合わせをなくす
修正前
副問い合わせを行うと、処理時間がかかるため、分割します。
SELECT 列名1, 列名2, ...
FROM テーブルa
WHERE 列名 IN (
SELECT 列名
FROM テーブルb
[WHERE 条件式など]
)上記のようなSQLを純粋に次の2つに分けて実行します。
修正後
SELECT 列名
FROM テーブルb
[WHERE 条件式など]ここで一度実行し、その結果を使って次のSQLを実行します。
SELECT 列名1, 列名2, ...
FROM テーブルa
WHERE 列名 IN (実行結果)joinを分ける
修正前
joinには時間がかかってしまうため、それを分けるか、結合前に条件を指定します。
SELECT
a.列名1,
a.列名2
FROM
テーブルa
INNER JOIN
テーブルb
ON
a.列名1 = b.列名1 -- 結合条件
WHERE
条件式など修正後
SELECT 列名1
FROM テーブルb
[WHERE 条件式など]ここで一度実行し、その結果を使って次のSQLを実行します。
SELECT
a.列名1,
a.列名2
FROM
テーブルa
WHERE
実行結果(存在確認)

