2016-11-16 6 views
-1

私は1234567が以下のとおりであり、そのユーザーがactive_at DESCで注文しているようです。 from_user_idto_user_id -INNER JOINとORDER BYを使用するクエリのインデックスを作成するにはどうすればよいですか?

SELECT U.* FROM users U 
INNER JOIN follows F 
ON F.to_user_id = U.id 
WHERE F.from_user_id = 1234567 
ORDER BY U.active_at DESC 

followsテーブルのみ2列を有しています。これらの2つの列はusers.idの外部キーです。

現在、私はU.active_atにインデックスを持っています。しかし、私の直感は、INNER JOINの存在のためにインデックスが使用されないことを私に伝えています。

このクエリのインデックスは、どのように正確に行う必要がありますか?

+1

直感ですか? EXPLAINの何が問題なのですか? – Strawberry

+0

何が起こったのか試してみるのは間違っていますか? – FDavidov

答えて

0

これを完全に効率化することはできません。

最善のことは、他のクエリがto_user_idで開始する必要がある場合は

F: PRIMARY KEY(from_user_id, to_user_id) 
U: INDEX(id) -- (If `id` is the PRIMARY KEY, don't add this index.) 

はF.

に自動株式会社の主キー(id)を持っていない持っていることですが、二次INDEX(to_user_id, from_user_id)を持っています。

Many:many mapping table tips

関連する問題