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

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句を評価してくれるとのこと。頭イイね。

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