zoukankan      html  css  js  c++  java
  • MySQL SQL初级优化的具体方案;

    select company.* from cu_role_extend_company company where 1=1 and company.role_id in(select role.id from cu_role role where 1=1 and role.id in(select relation.role_id from cu_role_relation relation where 1=1 and relation.parent_role_id = (select role.id from cu_role role where 1=1 and role.concerned_id = ( select unionT.id from cu_concerned_union unionT where unionT.id = (select inst.concerned_id from cu_extend_inst inst where 1=1 and inst.inst_code = 'XJ')))));

    传统where子查询情况下=>SQL运行下来需要0.666s;查询出来50+数据;筛选数据总量大概在400左右(所有表的数据总量);

    SELECT
    companyW.id, companyW.tnt_inst_id, companyW.role_id, companyW.name, companyW.merchant_code,
    companyW.person_source,
    companyW.settlement_cycle, companyW.settlement_type,
    companyW.operation_scope,
    companyW.creator_id, companyW.create_time, companyW.modifier_id, companyW.modify_time,companyW.max_amt_set,
    companyW.min_amt_set,companyW.notify_url,companyW.latitude,companyW.longitude,companyW.settl_cycle_ctrl,companyW.org_code,
    companyW.exn,companyW.exn1,companyW.exn2
    FROM
    cu_role_extend_company companyW
    INNER JOIN (
    SELECT DISTINCT
    ( company.id )
    FROM
    cu_role_extend_company company
    INNER JOIN (
    SELECT
    role.id
    FROM
    cu_role role
    INNER JOIN (
    SELECT
    relation.role_id
    FROM
    cu_role_relation relation
    INNER JOIN (
    SELECT
    role.id
    FROM
    cu_role role
    INNER JOIN (
    SELECT
    unionT.id
    FROM
    cu_concerned_union unionT
    LEFT JOIN cu_extend_inst inst ON unionT.id = inst.concerned_id
    WHERE
    1 = 1
    AND inst.inst_code = 'XJ'
    ) x ON role.concerned_id = x.id
    ) z ON relation.parent_role_id = z.id
    ) c ON role.id = c.role_id
    ) v ON company.role_id = v.id
    ) b ON companyW.id = b.id;

    inner join 单字段写全部 情况下,SQL的运行稳定在0.610s左右;

    SELECT
    *
    FROM
    cu_role_extend_company companyW
    INNER JOIN (
    SELECT DISTINCT
    ( company.id )
    FROM
    cu_role_extend_company company
    INNER JOIN (
    SELECT
    role.id
    FROM
    cu_role role
    INNER JOIN (
    SELECT
    relation.role_id
    FROM
    cu_role_relation relation
    INNER JOIN (
    SELECT
    role.id
    FROM
    cu_role role
    INNER JOIN (
    SELECT
    unionT.id
    FROM
    cu_concerned_union unionT
    LEFT JOIN cu_extend_inst inst ON unionT.id = inst.concerned_id
    WHERE
    1 = 1
    AND inst.inst_code = 'XJ'
    ) x ON role.concerned_id = x.id
    ) z ON relation.parent_role_id = z.id
    ) c ON role.id = c.role_id
    ) v ON company.role_id = v.id
    ) b ON companyW.id = b.id;

    inner join 用*查全量字段情况下,SQL的运行稳定在0.460s左右;

  • 相关阅读:
    JVM系列(三)垃圾回收
    JVM系列(二)各区域的OOM
    JVM系列(一)内存模型
    获取IP、mac等信息
    memcached(七)--常用指令抓包分析
    memcached(五)--源码分析,启动
    apt安装mysql + 简易配置
    memcached(六)--spyMemcached的get操作
    解决mysql获取不到连接的问题
    tcp一些要点
  • 原文地址:https://www.cnblogs.com/llja/p/14686538.html
Copyright © 2011-2022 走看看