- 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的なツールはないのかな?
はふ、今日も眠くなってきたので明日に持ち越し。
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的なツールはないのかな?
はふ、今日も眠くなってきたので明日に持ち越し。
スポンサーサイト
- Newer: OTNにSUNのプロダクツが登場
- Older: ORACLEでlimitあるいはoffsetを実現するのは無理なのか
Comments: 0
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 ヒビコレショウジン