1000件のデータを一回づつinsertを発行すると
遅くなるので良い方法がないか調べていたら
良い方法を発見![ひらめき電球](https://stat.ameba.jp/blog/ucs/img/char/char2/089.gif)
MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 5.2.10 IN
データをためて一括で登録させる。
// アップデートするデータを「$i_page」に累積させる
$i_page .= "('$lid', '$ldate', '$lcount'),";
// 「$i_page」の最後の一文字を除去
$i_page = substr($i_page ,0, -1);
mysql_query("INSERT INTO page VALUES ".$i_page);
調べているときにMySQLを高速化する方法を
発見したのでメモ![ひらめき電球](https://stat.ameba.jp/blog/ucs/img/char/char2/089.gif)
MySQLの最適化 - 株式会社M&Aバンク
以下引用です。
MySQLの最適化
遅くなるので良い方法がないか調べていたら
良い方法を発見
![ひらめき電球](https://stat.ameba.jp/blog/ucs/img/char/char2/089.gif)
MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 5.2.10 IN
データをためて一括で登録させる。
// アップデートするデータを「$i_page」に累積させる
$i_page .= "('$lid', '$ldate', '$lcount'),";
// 「$i_page」の最後の一文字を除去
$i_page = substr($i_page ,0, -1);
mysql_query("INSERT INTO page VALUES ".$i_page);
調べているときにMySQLを高速化する方法を
発見したのでメモ
![ひらめき電球](https://stat.ameba.jp/blog/ucs/img/char/char2/089.gif)
MySQLの最適化 - 株式会社M&Aバンク
以下引用です。
MySQLの最適化
- 可能な限りSQL文は後から一括して実行。
- LIMITを使い、呼び出すレコード数を制限。
- SELECT等においてフィールドを呼び出す際、インデックスがあるものを優先して指定。
- ソートする場合はインデックスがあるフィールドを「ORDER BY」において指定。
- グループ化(「GROUP BY」)する際にソートする必要がない場合でも「ORDER BY NULL」と指定。
- マルチプル「INSERT INTO」を利用。(※後から一括してSQL文を実行)
- UPDATEは遅い。一度「TRUNCATE TABLE」でテーブルを空にした後に更新されたデータを一気にマルチプル「INSERT INTO」することを検討。
- DELETEは遅い。「TRUNCATE TABLE」を検討。
- 大量のレコードをDELETEした後は「OPTIMIZE TABLE」でテーブルを最適化。
- WHERE節で不必要な()を使わない。
- WHERE節で「LIKE」の代わりに「REGEXP」や「in」が使えないか検討。