mysqlで、delete文の実行計画を確認する
mysqlで、delete文の実行に30分くらいかかっているところがあったのでindexを張ったら8分くらいに短縮した。
で、ちゃんとcreateしたindexを使っているのかなあと思って、explain delete・・・と書いて実行してみたが、「#1064 - You have an error in your SQL syntax;」と言われてしまう。なのでググったら英語のページが出てきた。頑張って読んだ。
mysql explain delete? - Stack Overflow
Q.削除クエリを説明する方法はありますか?
A.実行計画を知りたいdelete文のfrom以降をコピーして、 select 1 from ・・・ where ・・・という文を作り、それの頭にexplainをつけて実行しろ。
※意訳です。
要するにDELETE文を直接explainすることはできないので、無理矢理select文を作ってexplainしろってことのようだ。「select 1」の部分はオプティマイザを一切使わないので純粋にwhere句を評価してくれるとのこと。頭イイね。