zoukankan      html  css  js  c++  java
  • mysql进阶 withas 性能调优


    使用前提:多次重复出现的子查询

    with-as 意义:对于多次反复出现的子查询,可以降低扫描表的次数和减少代码重写,优化性能和使编码更加简洁

    ✿ 使用注意事项:

    1、mysql版本: 8以及8以上的

    2、首先定义子查询的临时虚拟表

    语法: with 临时表名 as 子查询,定义出(子查询)的虚拟临时表,然后定义之后需要立马引用才有意义

    即:定义好with子查询,但其后没有跟select查询引用,会报错!
    即:临时虚拟表需要立即引用它,with子查询语句必须定义在引用它的select语句之前!

    3、定义多个子查询的临时表,这多个子查询共用一个with子查询之间使用,隔开

    注意:子查询与引用之间不能加,

     #WITH AS 语法: WITH 虚拟临时表名 AS (子查询) +引用
    
      WITH temp AS (select * from t_teacher) # 定义子查询
      (SELECT `name` FROM temp) t1,		    # 多次引用子查询的临时虚拟表
      (SELECT age FROM temp) t2,
      (SELECT sex FROM temp) t3
      WHERE t1.id = t2.id AND t1.id = t3.id and t2.id = t3.id;
    
      #WITH AS 语法(定义多个子查询)
      WITH 
    	temp1 AS (select * from t_teacher), 
    	temp2 AS (select * from t_stu),
    	temp3 AS (select * from t_user)
    	select count(*) FROM temp1......
    	#....引用即可.....#
    

    ✿ 重复子查询之with-as是否使用效率对比:

    • 没有使用with-as:selet 物理表时扫描了两次
    • 使用了with-as:select 临时表,节约了一次加载时间

    本文来自博客园,作者:一乐乐,转载请注明原文链接:https://www.cnblogs.com/shan333/p/15778971.html

  • 相关阅读:
    MS SQL2000 && 2005转出数据字典
    基于角色的访问控制'的权限管理的数据库的设计实现
    ANSI SQL / T SQL / PLSQL
    MS SQL系統資料表內容
    关闭不需要服务 为Windows系统提速
    Form.Enctype屬性
    流程圖
    ASPSmartUpload祥解
    数据排序常见算法(JS版)
    如何实现定时开机
  • 原文地址:https://www.cnblogs.com/shan333/p/15778971.html
Copyright © 2011-2022 走看看