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表结构:



  • 相关阅读:
    .Net环境下的缓存技术介绍
    JavaScript 全局对象
    JavaScript escape() 函数
    实现DIV拖动
    巧用Ajax的beforeSend 提高用户体验
    js中ie8下不识别indexOf的解决办法
    页面弹窗效果HTML
    让html页面中的文字不可选中
    MVC路由规则
    C# Math.Round
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6796519.html
Copyright © 2011-2022 走看看