0

テーブル「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

ありがとう

4

0 に答える 0