テーブル「posts」からデータを選択するとしましょう:
id | bigint(20) | PK
text | varchar(400)
およびテーブル「いいね」:
user_id | bigint(20)
post_id | bigint(20)
これらの 2 つのフィールドは主キーとして結合されます
500'000 レコードのテーブル「posts」での私の選択が単純であるとしましょう
SELECT id, text FROM posts LIMIT 0,20
また、どの投稿に「いいね」があるかを知る必要があります (ユーザー/投稿ごとに 1 つしか存在できません。主キーの定義を参照してください)。だから私はただすることができました
SELECT id, text FROM posts LEFT JOIN likes ON posts.id = likes.post_id LIMIT 0,20
クエリは 20 レコードまたは 500,000 のテーブル「投稿」すべてに参加しますか? 有効なクエリの WHERE/GROUP 句で「いいね」の列が使用されていません。
の出力
EXPLAIN
SELECT id
FROM posts
LEFT JOIN likes ON posts.id = likes.post_id
LIMIT 0 , 20
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE posts index NULL PRIMARY 16 NULL 58 Using index
1 SIMPLE likes ref PRIMARY PRIMARY 8 legendaily.posts.id 1 Using index
ありがとう