CakePHP でid が PRIMARY KEY では無い時の注意

Share on Facebook2Share on Google+0Tweet about this on TwitterShare on LinkedIn0

はまったので備忘録的に。

CakePHPのmodelを使って、レコードの削除をしてたんやけどどうもレスポンスが悪い。

 

Model の deleteAll メソッドに指定した検索条件のカラムににはちゃんとINDEXは貼ってあるけど

どうもINDEXが使われてないような感じがする。

 

で、MySQLの方で実際に発行されてるSQLを調べてみると

deleteAllがコールされた段階で SELECT とDELETE がセットで呼ばれてるようだ。

 

deleteAll に指定した検索条件で SELECT した後、その SELECT 結果から取得した id で DELETE をやってる。

普通に使ってるテーブルなら id はたいてい PRIMARY KEY になってるから気にしてなかったけど

今回のはログテーブルだったもんで id にINDEX 貼ってなかったのが原因だったようで…

 

id にINDEX追加したら無事爆速なレスポンスになったとさ。

Share on Facebook2Share on Google+0Tweet about this on TwitterShare on LinkedIn0

あわせて読みたい

Fatal error: Uncaught Exception: 12: REST API is deprecated for versions v2.1 and higher (12) thrown in /var/www/junkpot.net/tech/html/wp-content/plugins/seo-facebook-comments/facebook/base_facebook.php on line 1273