zoukankan      html  css  js  c++  java
  • mysql数据库sql优化——子查询优化

    1、什么是子查询、表关联查询:
    子查询:是指在主sql语句中的select或where子句中使用select查询语句;select a.name,(select b.name from b where b.id=a.id) from a where a.name lik 'a%'
    表关联查询:指多个表联合查询。select a.name,b.name from a,b where a.id=b.id and a.name like 'a%';
    尽管联合查询性能并不佳。可是和 MySQL 的子查询比起来还是有非常大的性能优势。

    MySQL 的子查询运行计划一直存在较大的问题。尽管这个问题已经存在多年。可是到眼下已经公布的全部稳定版本号中都普遍存在,一直没有太大改善。

    尽管官方也在非常早就承认这一问题。而且承诺尽快解决。可是至少到眼下为止我们还没有看到哪一个版本号较好的攻克了这一问题。
    默认情况,子查询中使用全表扫描,所以总的I/O次数=主表数*子表数。

    当主表、子表中数据均查过1w时,使用子查询的总体性能就会马上下降。并且下降的会非常厉害(測试发现大概须要10s多)


    针对上面问题,解决方式:
    1)对子表中的关联列建立索引、或建立外键关系:
    例如以下有两张表a、b。使用子查询其运行计划例如以下

    a表结构:



  • 相关阅读:
    jstl与el学习笔记
    Subversion 安装笔记
    某公司面试
    字符集与字符编码的一些小常识,以及java web中文乱码的一些solution
    分治算法与合并排序示例
    C/C++ 笔试,难倒我哉
    HTML meat作用
    VIM配置DBGp调试PHP程序
    更新系统引导项
    PHP技术讨论群
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6796519.html
Copyright © 2011-2022 走看看