シェアする

  • このエントリーをはてなブックマークに追加

[CakePHP]テーブルから全ての行を高速に削除するメモ

仰々しいタイトルですが、ようするにCakePHPでテーブルスキャンせずに削除するTRUNCATEを使うメモです。
CakePHPでは普段独自のクエリを書かないのでModel->query()の存在もついつい忘れがちなんですよね。

TRUNCATE構文はTRUNCATE [テーブル名];なので、

$this->TmpHoge->query('TRUNCATE tmp_hoges;');

でOK。

Model->query()を使えば任意のSQLクエリが実行できるのでTRUNCATEに限らず、複雑なJOINやサブクエリなどにも対応できます。

ちなみにTRUNCATEはロールバックが効かないデータベースが多いので注意して使ってくださいね。
僕は時間が掛かるクエリの実行結果を一定期間保存する仮テーブルの更新の時などにだけ利用しています。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする