fc2ブログ

Home > メモ > MySQLでの実行計画の確認方法ではまり

MySQLでの実行計画の確認方法ではまり

  • Posted by: Nakunaru
  • 2010-01-07 Thu 00:06:25
  • メモ
1つ前の記事
http://hitai.blog72.fc2.com/blog-entry-47.html
にて、ORACLEでlimitができないか、という話をしていて、まずはMySQLでlimit句を使用したときに、索引を使うかどうかという所を検証していて、ちょっと混乱したので整理中です。





■やっとこと
・CREATE TABLE test_tab (no int, name varchar(5)) engine=innodb;
・INSERT INTO test_tab VALUES(1,'aaa');
・INSERT INTO test_tab SELECT * FROM test_tab; X 十数回繰り返し(200万件程度にした)
・INSERT INTO test_tab VALUES(2,'bbb');
・commit;
・CREATE INDEX test_idx ON test_tab(no);
ここまで準備
・EXPLAIN SELECT * FROM test_tab WHERE no=1;
ここでフルスキャンになることを期待していたんだけど、出て来たのは「key : test_idx」。
おかしい。
ここでフルスキャンになっといて、limitつけたら索引を使ったよ、やったね!
というのが想定してたシナリオなのに、まず最初のフルスキャンが発生しない。
MySQLってコストベースだよねぇ?
違うのかな。

■疑問点
・EXPLAINで出力される実行計画は、実際に使われた計画ではなく、想定される計画っぽい。というかそういうこと。
 →オプションでSQLも実行してしまうとか、SQL Serverみたいに実際に使用した計画を出すオプションとかないのか?
・EXPLAINではなく、トレースをとってみるか、と思ったんだけどマニュアルにはトレース関連の記述があまり見当たらない。
 OSレベルでのトレースはあったけど。
 →ORACLEのSQL_TRACEみたいなのとか、statspack的なツールはないのかな?


はふ、今日も眠くなってきたので明日に持ち越し。
スポンサーサイト



Comments: 0

Comment Form
サイト管理者にのみ通知する

Trackback+Pingback: 0

TrackBack URL for this entry
http://hitai.blog72.fc2.com/tb.php/48-08de0d4a
Listed below are links to weblogs that reference
MySQLでの実行計画の確認方法ではまり from ヒビコレショウジン

Home > メモ > MySQLでの実行計画の確認方法ではまり

タグクラウド
Categories
Monthly
Recent Entries
Recent Comments
Recent Trackbacks
Appendix

Nakunaru

    Author:Nakunaru

    データベース(ORACLEとかSQL ServerとかDB2とかMySQLとか)とか技術者教育とかプログラムとか。
    気になる技術を少しずつ勉強していきます。


Return to page top