(表一)photo_table:(相册表) photo_id int user_id int images_url varchar (表二)user_attention:(关注表) gz_id int user_id int guanzhu_id (表三) account:(用户表) user_id int user_name varchar效果是: 统计 每个用户 有多少张照片,和多少个关注人。
id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY a ALL (NULL) (NULL) (NULL) (NULL) 12351 Using where; Using temporary; Using filesort 1 PRIMARY <derived2> ALL (NULL) (NULL) (NULL) (NULL) 11830 1 PRIMARY <derived3> ALL (NULL) (NULL) (NULL) (NULL) 1522 1 PRIMARY <derived4> ALL (NULL) (NULL) (NULL) (NULL) 1294 4 DERIVED fs ALL user_id (NULL) (NULL) (NULL) 3360 Using temporary; Using filesort 4 DERIVED a eq_ref PRIMARY PRIMARY 4 meet_com.fs.user_id 1 Using index 3 DERIVED lt index receive_id receive_id 4 (NULL) 9522 Using index; Using temporary; Using filesort 3 DERIVED a eq_ref PRIMARY PRIMARY 4 meet_com.lt.receive_id 1 Using index 2 DERIVED a index PRIMARY PRIMARY 4 (NULL) 12351 Using index 2 DERIVED p ref user_id user_id 4 meet_com.a.user_id 1 Using index
select a.user_id ,count(b.user_id) photo_num ,count(c.user_id) fensi_num from account a left join photo_table b on a.user_id =b.user_id left join user_attention c on a.user_id =c.user_id group by a.user_id
(表一)photo_table:(相册表)
photo_id int
user_id int
images_url varchar
(表二)user_attention:(关注表)
gz_id int
user_id int
guanzhu_id
(表三)
account:(用户表)
user_id int
user_name varchar效果是:
统计 每个用户 有多少张照片,和多少个关注人。
哦哦 数据量的话 也就1w条数据量,他们都有 user_id 作为主外键,mysql 在哪里能看到执行计划哦?
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY a ALL (NULL) (NULL) (NULL) (NULL) 12351 Using where; Using temporary; Using filesort
1 PRIMARY <derived2> ALL (NULL) (NULL) (NULL) (NULL) 11830
1 PRIMARY <derived3> ALL (NULL) (NULL) (NULL) (NULL) 1522
1 PRIMARY <derived4> ALL (NULL) (NULL) (NULL) (NULL) 1294
4 DERIVED fs ALL user_id (NULL) (NULL) (NULL) 3360 Using temporary; Using filesort
4 DERIVED a eq_ref PRIMARY PRIMARY 4 meet_com.fs.user_id 1 Using index
3 DERIVED lt index receive_id receive_id 4 (NULL) 9522 Using index; Using temporary; Using filesort
3 DERIVED a eq_ref PRIMARY PRIMARY 4 meet_com.lt.receive_id 1 Using index
2 DERIVED a index PRIMARY PRIMARY 4 (NULL) 12351 Using index
2 DERIVED p ref user_id user_id 4 meet_com.a.user_id 1 Using index
数据库 差不多的吧?
<table border=1>
<tr>
<td bgcolor=silver class='medium'>id</td><td bgcolor=silver class='medium'>select_type</td><td bgcolor=silver class='medium'>table</td><td bgcolor=silver class='medium'>type</td><td bgcolor=silver class='medium'>possible_keys</td><td bgcolor=silver class='medium'>key</td><td bgcolor=silver class='medium'>key_len</td><td bgcolor=silver class='medium'>ref</td><td bgcolor=silver class='medium'>rows</td><td bgcolor=silver class='medium'>Extra</td></tr>
<tr>
<td class='normal' valign='top'>1</td>
<td class='normal' valign='top'>PRIMARY</td>
<td class='normal' valign='top'>a</td>
<td class='normal' valign='top'>ALL</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>12351</td>
<td class='normal' valign='top'>Using where; Using temporary; Using filesort</td>
</tr>
<tr>
<td class='normal' valign='top'>1</td>
<td class='normal' valign='top'>PRIMARY</td>
<td class='normal' valign='top'><derived2></td>
<td class='normal' valign='top'>ALL</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>11830</td>
<td class='normal' valign='top'> </td>
</tr>
<tr>
<td class='normal' valign='top'>1</td>
<td class='normal' valign='top'>PRIMARY</td>
<td class='normal' valign='top'><derived3></td>
<td class='normal' valign='top'>ALL</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>1522</td>
<td class='normal' valign='top'> </td>
</tr>
<tr>
<td class='normal' valign='top'>1</td>
<td class='normal' valign='top'>PRIMARY</td>
<td class='normal' valign='top'><derived4></td>
<td class='normal' valign='top'>ALL</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>1294</td>
<td class='normal' valign='top'> </td>
</tr>
<tr>
<td class='normal' valign='top'>4</td>
<td class='normal' valign='top'>DERIVED</td>
<td class='normal' valign='top'>fs</td>
<td class='normal' valign='top'>ALL</td>
<td class='normal' valign='top'>user_id</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>3360</td>
<td class='normal' valign='top'>Using temporary; Using filesort</td>
</tr>
<tr>
<td class='normal' valign='top'>4</td>
<td class='normal' valign='top'>DERIVED</td>
<td class='normal' valign='top'>a</td>
<td class='normal' valign='top'>eq_ref</td>
<td class='normal' valign='top'>PRIMARY</td>
<td class='normal' valign='top'>PRIMARY</td>
<td class='normal' valign='top'>4</td>
<td class='normal' valign='top'>meet_com.fs.user_id</td>
<td class='normal' valign='top'>1</td>
<td class='normal' valign='top'>Using index</td>
</tr>
<tr>
<td class='normal' valign='top'>3</td>
<td class='normal' valign='top'>DERIVED</td>
<td class='normal' valign='top'>lt</td>
<td class='normal' valign='top'>index</td>
<td class='normal' valign='top'>receive_id</td>
<td class='normal' valign='top'>receive_id</td>
<td class='normal' valign='top'>4</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>9522</td>
<td class='normal' valign='top'>Using index; Using temporary; Using filesort</td>
</tr>
<tr>
<td class='normal' valign='top'>3</td>
<td class='normal' valign='top'>DERIVED</td>
<td class='normal' valign='top'>a</td>
<td class='normal' valign='top'>eq_ref</td>
<td class='normal' valign='top'>PRIMARY</td>
<td class='normal' valign='top'>PRIMARY</td>
<td class='normal' valign='top'>4</td>
<td class='normal' valign='top'>meet_com.lt.receive_id</td>
<td class='normal' valign='top'>1</td>
<td class='normal' valign='top'>Using index</td>
</tr>
<tr>
<td class='normal' valign='top'>2</td>
<td class='normal' valign='top'>DERIVED</td>
<td class='normal' valign='top'>a</td>
<td class='normal' valign='top'>index</td>
<td class='normal' valign='top'>PRIMARY</td>
<td class='normal' valign='top'>PRIMARY</td>
<td class='normal' valign='top'>4</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>12351</td>
<td class='normal' valign='top'>Using index</td>
</tr>
<tr>
<td class='normal' valign='top'>2</td>
<td class='normal' valign='top'>DERIVED</td>
<td class='normal' valign='top'>p</td>
<td class='normal' valign='top'>ref</td>
<td class='normal' valign='top'>user_id</td>
<td class='normal' valign='top'>user_id</td>
<td class='normal' valign='top'>4</td>
<td class='normal' valign='top'>meet_com.a.user_id</td>
<td class='normal' valign='top'>1</td>
<td class='normal' valign='top'>Using index</td>
</tr>
</table>
,count(b.user_id) photo_num
,count(c.user_id) fensi_num
from account a
left join photo_table b on a.user_id =b.user_id
left join user_attention c on a.user_id =c.user_id
group by a.user_id