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

  • 相关阅读:
    人工智能学习笔记003-Python运算符
    人工智能学习笔记002-Python数据类型
    人工智能学习笔记001—python介绍
    dataclasses 笔记
    Js逆向-滑动验证码图片还原
    python3 marshmallow学习
    python 安装 SQLAlchemy 报错
    flask 与 SQLAlchemy的使用
    flask 与 flask_migrate的使用
    flask与flask-script的使用
  • 原文地址:https://www.cnblogs.com/iLoveMyD/p/2426331.html
Copyright © 2011-2022 走看看