zoukankan      html  css  js  c++  java
  • 8.2.1.9 LEFT JOIN and RIGHT JOIN Optimization 左关联和又关联

    8.2.1.9 LEFT JOIN and RIGHT JOIN Optimization 左关联和又关联

    MySQL 实现一个A LEFT JOIN B 关联如下:

    1.table B 是设置为依赖表A 和A依赖的所有表

    1. 表A 是设置为所有的表(除了B) 用于LEFT JOIN 条件:

    2. LEFT JOIN 条件是用于确定如何从B表检索记录(换句话说,WHERE 子句中的任何条件不被使用)

    所有的标准连接优化被执行, 一个表总是在它依靠的所有表后读取,

    如果这里有一个特别的依靠, MySQL 执行一个错误:

    所有的标准WHERE 优化被执行:

    如果有一个记录 在A 匹配WHERE 子句, 但是没有记录在B通过关联条件匹配,一个额外的B记录会生成 B表关联不上的列设置为

    NULL

    如果你使用LEFT JOIN 来找到不存在某些表的记录有下面的测试:

    col_name IS NULL 在where 部分, col_name 是一个列声明为NOT NULL,

    MySQL 停止寻找更多的记录(对于一个特定的组合索引)

    右连接实现是类似于左连接 颠倒的角色:

    join 优化器计算关联表的顺序, 表读取的顺序强制通过LEFT JOIN或者 STRAIGHT_JOIN 帮助

    关联优化的更快,因为有较小的表的列需要检查, 注意,这意味着,如果你做一个下面类型的查询,

    Mysql 做一个全表扫描B因为全关联 强制它在d:之前读取

    SELECT *
    FROM a JOIN b LEFT JOIN c ON (c.key=a.key)
    LEFT JOIN d ON (d.key=a.key)
    WHERE b.key=d.key;

  • 相关阅读:
    python CST中国标准时间格式转换
    pytest+报告插件
    getopt实现命令行
    初识Redis
    python list 切片及翻转的使用
    mysql中information_schema表
    获取两个字符串中最长的相同子串
    mongodb数据库备份
    VS2005下边不能使用target>remote tool解决方法
    wince LoadDriver tool
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351288.html
Copyright © 2011-2022 走看看