某サービスのクエリチューニングのお話。 ブログとか日記とかそういうサービス系で次のようなテーブルがあったとします。 CREATE TABLE entries ( id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, user_id INT UNSIGNED NOT NULL, posted_by TINYINT UNSIGNED NOT NULL, --#PC、mobileなどどこから投稿されたかのフラグ title VARCHAR(512) NOT N... > このページを見る
最終更新時間:
2011年08月14日00時19分
みんなのブックマーク 人気(0) 新着
-
Covering Index と self-join と MySQL - http://t.co/UtHlzCdw
- "created_atが先頭にきているインデックスでなくても、created_atが含まれていればそれを利用するようです" 不思議だ、どうやってインデックスを利用しているんだろう
- わかった
-
小さな一時テーブルを最初に作ることによって、JOINなしよりJOINありの方が速くなるという例。30分>数秒。これは面白い
-
self join 使わずに force index 使った方が速いと思うあるいは sh2 さんのやり方 SELECT COUNT(*) FROM entries FORCE INDEX (user_id_created_at_status) WHERE (created_at BETWEEN ... AND ...) AND posted_by=2;
-
使えそう!
-
この発想はなかったなー。self-join は「仕方なくやるもの」で、「やると遅くなる」って思い込みがあった。
- テーブルスキャンを避けて、Covering Indexとself-joinで処理するっていうことか。こんなテクあるんだなあ。
- self-joinがパフォーマンス向上に有用な事例。と使わないほうが良いケースも。
-
Covering Index と self-join と MySQL - blog.nomadscafe.jp
- 自信ないけどFORCE INDEX (user_id)って効かないでしょうか。あと4.1以上ならSELECT COUNT(*) FROM (SELECT posted_by … WHERE created_at BETWEEN …) e WHERE posted_by = 2
-
Covering Index と self-join と MySQL - blog.nomadscafe.jp
- なるほど
-
書いた



![基礎からのMySQL [基礎からのシリーズ] (プログラマの種シリーズ)](http://ecx.images-amazon.com/images/I/41cVdML6rcL._SL75_.jpg)




