0 0

请教一个mysql 的sql优化10

sql查询数据量大概是20W左右,必要的地方已经创建了索引了,但是执行时间还是在30秒,现在要优化到3秒左右,没有具体办法了

sql查询语句

 SELECT v.AnalyzerDATVersion as VER_X,count(distinct v.CLIENT_ID) as NUMBER,round(count(distinct v.CLIENT_ID)/t.TOTAL*100,2) 
as RATE from VIRUS_EVENTS_INFO as v
left join VIRUS_ComputerProperties as p on (p.CLIENT_ID=v.CLIENT_ID and p.SRC_SYSTEM=v.SRC_SYSTEM)
left join VIRUS_COMPUTER_ACCOUNT as ca on (ca.CLIENT_ID=p.CLIENT_ID and ca.SRC_SYSTEM=p.SRC_SYSTEM)
left join COMM_ACCOUNT as a on a.EMPLOYEE_NO=ca.EMPLOYEE_NO
inner join
(select count(*) as TOTAL from VIRUS_ComputerProperties v  WHERE v.SRC_SYSTEM='Mcafee'    ) as t 
 WHERE v.SRC_SYSTEM='Mcafee'    group by  VER_X   
UNION  

SELECT "9999999999"  AS VER_X,count(distinct temp.INFECTED_MAC) as NUMBER,
round(count(distinct temp.INFECTED_MAC)/t.TOTAL*100,2) as RATE 
from (select max(VIRUS_LIB_VER_X+0) as VIRUS_LIB_VER_X,INFECTED_MAC,temp.EMPLOYEE_NO as EMPLOYEE_NO, temp.SRC_SYSTEM as SRC_SYSTEM 
from SOC_VIRUS_AUDIT_INFO temp left join COMM_EMPLOYEE em on (temp.employee_no=em.employee_no) 
where temp.INFECTED_MAC!='' and temp.INFECTED_MAC is not null AND temp.SRC_SYSTEM='Mcafee'    group by INFECTED_MAC) temp 

left join COMM_EMPLOYEE em on (temp.employee_no=em.employee_no) 
inner join (select count(distinct INFECTED_MAC) AS TOTAL 
from SOC_VIRUS_AUDIT_INFO temp left join COMM_EMPLOYEE em on (temp.employee_no=em.employee_no)
where temp.INFECTED_MAC!='' and temp.INFECTED_MAC is not null AND temp.SRC_SYSTEM='Mcafee'   ) t 
where temp.INFECTED_MAC!='' and temp.INFECTED_MAC is not null  AND temp.SRC_SYSTEM='Mcafee'     group by  "9999999999"  order by  VER_X+0 desc ,RATE+0 desc limit 14

 其实主要费时在 UNION  的前半段,后半段的执行时间在0.07秒左右,所以主要是前半段问题,VIRUS_COMPUTER_ACCOUNT 是个视图 表

COMM_ACCOUNT ,VIRUS_EVENTS_INFO VIRUS_ComputerProperties 中的on字段后用到的条件字段都加了索引,求教一下看哪里还需要继续深入优化的。

2010年2月23日 11:01
目前还没有答案

相关推荐

    Mysql根据时间查询日期的优化技巧

    这种写法的问题在于,MySQL无法直接利用索引来优化查询,因为它涉及到函数操作,导致全表扫描,效率较低。 2. 使用`BETWEEN`关键字: ```sql SELECT * FROM chess_user u WHERE u.register_time BETWEEN '2018-01-...

    个人博客PHP设计源码

    首先,我们看到一个名为"blog.sql"的文件,这通常是数据库的备份或者结构文件。在博客系统中,数据库用于存储用户信息、文章内容、评论等关键数据。SQL(Structured Query Language)是用于管理关系数据库的语言。这...

    AlbumModule.rar_ALBUMMODULE_TEACH

    在IT行业中,开发一个功能完善的专辑管理系统是一项挑战性的工作,涉及到多个技术领域的整合与优化。本文将深入探讨“AlbumModule.rar”这一压缩包中所包含的“AlbumModule”项目,分析其设计思想,以及针对描述中...

    ssm旅游资源网站答辩ppt.pptx

    MyBatis是一个良好的可持续性框架,支持普通SQL查询,同时允许对存储过程的高级映射进行数据的优化处理。 在系统测试中,我们主要是判断系统是否可以正常运行,功能模块是否可以实现操作。测试程序是开发过程中的一...

    cakephp框架 学习ing

    3. **搭建第一个应用**:使用Bake生成一个简单的应用,了解其工作流程。 4. **数据库交互**:学习如何定义模型、创建表单并进行CRUD(创建、读取、更新、删除)操作。 5. **模板和视图**:理解如何设计和渲染视图,...

    在线考试系统 初学者的参考资料

    在线考试系统是现代教育技术应用中的一个重要组成部分,它利用计算机技术和网络平台,为学生和教师提供了一种方便、快捷的考核方式。对于C#初学者来说,了解并掌握在线考试系统的开发是提升技能的重要步骤。以下是...

    程序员.rar

    《程序员.rar》是一个压缩文件,专门针对中国计算机技术与软件专业技术资格(水平)考试中的“程序员”级别。这个压缩包包含了2009年至2018年上半年的所有程序员级别考试的真实试题及对应的参考答案,是备考程序员...

    JAVA数据库报告.docx

    - **项目目标**:开发一个工资管理系统的小型数据库应用系统,该系统需具备人员管理、工资管理、部门管理等功能,并能灵活调整工资构成以适应未来的需求变化。 #### 二、设计内容概述 - **设计题目**:工资管理...

    php 述职报告(共4篇).docx

    4. **网页优化**:了解如何进行网页静态化,使用如Smarty这样的模板引擎,以及缓存技术如ThinkPHP的缓存机制,有助于提高网站性能和响应速度。 5. **安全防范**:防止SQL注入是开发人员必须掌握的重要技能,以保护...

    DREAMWEAVER动态网站制作JSP实习报告

    性能问题则可能需要优化SQL查询、调整服务器配置等。 总的来说,这份实习报告全面展示了使用Dreamweaver和JSP创建动态网站的过程,强调了硬件与软件环境的准备、系统设计的重要性以及在实践中解决问题的能力培养。...

    Java面试考核目标.docx

    - 中级:参与过至少一个完整项目的生命周期管理。 - 高级:具备多个项目的成功案例,能够独立承担项目负责人角色。 - 资深/专家:具备深厚的行业积累,在某一细分领域内享有一定声誉。 #### 七、特长加成 - **...

Global site tag (gtag.js) - Google Analytics