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表全表扫描

  • 相关阅读:
    空间解析几何与向量代数(复习笔记)
    OpenGL数据类型
    Symbian c++ 调用标准C产生内存泄露
    symbian c++调用标准c函数方法
    (转载)一篇对理解OpenGL的描述的文章
    (个人摘要)make工具的用法
    (转载)哈佛大学凌晨4点半的景象
    网页抓取中的debug 问题记录
    split 使用
    三、抽象工厂(Abstract Factory)模式
  • 原文地址:https://www.cnblogs.com/iLoveMyD/p/2426331.html
Copyright © 2011-2022 走看看