zoukankan      html  css  js  c++  java
  • mysql join

    查询 '产品的名字和公司的名字' 从产品表左连接公司表,再左连接用户表,product->company->user

    ① 有where条件:用户名是‘sdf’

    mysql> explain select product.name pname,company.name cname 
              from product 
              left join company using(cid)
              left join user using(cid) 
              where user.name = 'sdf' \G
    *************************** 1. row ***************************
    id: 1
    select_type: SIMPLE
    table: user
    type: ref
    possible_keys: cid,ux
    key: ux
    key_len: 19
    ref: const
    rows: 1
    Extra: Using where
    *************************** 2. row ***************************
    id: 1
    select_type: SIMPLE
    table: product
    type: ref
    possible_keys: cid
    key: cid
    key_len: 5
    ref: info.user.cid
    rows: 1
    Extra: Using where
    *************************** 3. row ***************************
    id: 1
    select_type: SIMPLE
    table: company
    type: eq_ref
    possible_keys: PRIMARY
    key: PRIMARY
    key_len: 4
    ref: info.product.cid
    rows: 1
    Extra:

    ②无where条件

    mysql> explain select product.name pname,company.name cname 
              from product
              left join company using(cid)
              left join user using(cid) \G
    *************************** 1. row ***************************
    id: 1
    select_type: SIMPLE
    table: product
    type: ALL
    possible_keys: NULL
    key: NULL
    key_len: NULL
    ref: NULL
    rows: 14
    Extra:
    *************************** 2. row ***************************
    id: 1
    select_type: SIMPLE
    table: company
    type: eq_ref
    possible_keys: PRIMARY
    key: PRIMARY
    key_len: 4
    ref: info.product.cid
    rows: 1
    Extra:
    *************************** 3. row ***************************
    id: 1
    select_type: SIMPLE
    table: user
    type: ref
    possible_keys: cid
    key: cid
    key_len: 5
    ref: info.product.cid
    rows: 1
    Extra: Using index
    3 rows in set (0.00 sec)

    结论1:当有where条件时用到了三个表的索引(有的用到了主键索引)

    结论2:先 where 再 join ,先处理有where的表,再按join顺序处理表

    结论3:join 的顺序在第二个实例中先是对product表全表扫描

  • 相关阅读:
    Linux下查找软件,rpm命令 dpkg命令 apt命令
    python3 requests的content和text方法
    python3爬虫超简单实例
    python3 爬取深圳主板公司名称,公司网址
    python3 类的学习
    ubuntu16.04同时使用 pyhton2.7和3.5,并随意切换
    (4)puppet常用的资源及其常用属性
    (3)puppet清单定义资源的语法
    (2)puppet单机测试命令apply
    lvs+keepalived高可用负载均衡
  • 原文地址:https://www.cnblogs.com/iLoveMyD/p/2426331.html
Copyright © 2011-2022 走看看