-
请教一个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无法直接利用索引来优化查询,因为它涉及到函数操作,导致全表扫描,效率较低。 2. 使用`BETWEEN`关键字: ```sql SELECT * FROM chess_user u WHERE u.register_time BETWEEN '2018-01-...
首先,我们看到一个名为"blog.sql"的文件,这通常是数据库的备份或者结构文件。在博客系统中,数据库用于存储用户信息、文章内容、评论等关键数据。SQL(Structured Query Language)是用于管理关系数据库的语言。这...
在IT行业中,开发一个功能完善的专辑管理系统是一项挑战性的工作,涉及到多个技术领域的整合与优化。本文将深入探讨“AlbumModule.rar”这一压缩包中所包含的“AlbumModule”项目,分析其设计思想,以及针对描述中...
MyBatis是一个良好的可持续性框架,支持普通SQL查询,同时允许对存储过程的高级映射进行数据的优化处理。 在系统测试中,我们主要是判断系统是否可以正常运行,功能模块是否可以实现操作。测试程序是开发过程中的一...
3. **搭建第一个应用**:使用Bake生成一个简单的应用,了解其工作流程。 4. **数据库交互**:学习如何定义模型、创建表单并进行CRUD(创建、读取、更新、删除)操作。 5. **模板和视图**:理解如何设计和渲染视图,...
在线考试系统是现代教育技术应用中的一个重要组成部分,它利用计算机技术和网络平台,为学生和教师提供了一种方便、快捷的考核方式。对于C#初学者来说,了解并掌握在线考试系统的开发是提升技能的重要步骤。以下是...
《程序员.rar》是一个压缩文件,专门针对中国计算机技术与软件专业技术资格(水平)考试中的“程序员”级别。这个压缩包包含了2009年至2018年上半年的所有程序员级别考试的真实试题及对应的参考答案,是备考程序员...
- **项目目标**:开发一个工资管理系统的小型数据库应用系统,该系统需具备人员管理、工资管理、部门管理等功能,并能灵活调整工资构成以适应未来的需求变化。 #### 二、设计内容概述 - **设计题目**:工资管理...
4. **网页优化**:了解如何进行网页静态化,使用如Smarty这样的模板引擎,以及缓存技术如ThinkPHP的缓存机制,有助于提高网站性能和响应速度。 5. **安全防范**:防止SQL注入是开发人员必须掌握的重要技能,以保护...
性能问题则可能需要优化SQL查询、调整服务器配置等。 总的来说,这份实习报告全面展示了使用Dreamweaver和JSP创建动态网站的过程,强调了硬件与软件环境的准备、系统设计的重要性以及在实践中解决问题的能力培养。...
- 中级:参与过至少一个完整项目的生命周期管理。 - 高级:具备多个项目的成功案例,能够独立承担项目负责人角色。 - 资深/专家:具备深厚的行业积累,在某一细分领域内享有一定声誉。 #### 七、特长加成 - **...