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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください