• 技术文章 >数据库 >MySQL

    mysql使用关联查询的注意点

    小妮浅浅小妮浅浅2021-05-22 11:23:42原创129

    1、确保ON和USING字句中的列上有索引。

    在创建索引的时候就要考虑到关联的顺序。当表A和表B用列c关联的时候,如果优化器关联的顺序是A、B,那么就不需要在A表的对应列上创建索引。没有用到的索引会带来额外的负担,一般来说,除非有其他理由,只需要在关联顺序中的第二张表的相应列上创建索引。

    2、确保任何的GROUP BY和ORDER BY中的表达式只涉及到一个表中的列,这样MySQL才有可能使用索引来优化。

    3、实例

    假设MySQL按照查询中的关联顺序A、B来进行关联操作,那么可以用下面的伪代码表示MySQL如何完成这个查询:

    outer_iterator = SELECT A.xx,A.c FROM A WHERE A.xx IN (5,6);
     
    outer_row = outer_iterator.next;
     
    while(outer_row) {
     
        inner_iterator = SELECT B.yy FROM B WHERE B.c = outer_row.c;
     
        inner_row = inner_iterator.next;
     
        while(inner_row) {
     
            output[inner_row.yy,outer_row.xx];
     
            inner_row = inner_iterator.next;
     
        }
     
        outer_row = outer_iterator.next;
     
    }  可以看到,最外层的查询是根据A.xx列来查询的,A.c上如果有索引的话,整个关联查询也不会使用。再看内层的查询,很明显B.c上如果有索引的话,能够加速查询,因此只需要在关联顺序中的第二张表的相应列上创建索引即可。

    以上就是mysql使用关联查询的注意点,算是对关联查询的优化,大家学会后也赶快试试吧。更多mysql学习指路:MySQL

    专题推荐:mysql关联查询
    上一篇:eclipse连接mysql 下一篇:mysql中LIMIT分页如何优化

    相关文章推荐

    • 基于Django的信息管理系统-----篮球信息管理系统(python+django+mysql)• python中PyMySQL有什么用• php安装mysql扩展模块• MySQL的五种索引类型极其特点• mysql服务如何删除?• python爬虫数据存入mysql• mysql读写分离是什么• mysql数据库有哪些调优方法• MySQL常见命令的整理• MySQL条件查询是什么• mysql常见单行函数有哪几类• mysql分组查询是什么• mysql事务中有哪些常见问题• mysql间隙锁是什么• mysql共享锁是什么• mysql中如何共享读锁• mysql使用表锁的两种情况• mysql中通信协议的介绍• mysql查询的执行过程• mysql索引的最左原则是什么• eclipse连接mysql
    品易云

    全部评论我要评论

  • 取消发布评论发送
  • 

    Python学习网