曾写过一篇《SQL调优与报表性能优化》的文章,今天结合那篇文章把前段时间工作中的一些认识和网上收集别人的经验重新总结整理一下,作为上一篇SQL优化的续篇,分享出来,希望对看到的人有所帮助。同时欢迎拍砖。
一、SQL优化的基本思想:
1、 最小化结果集数据量。
Sql所需处理的资源总量/Sql单位时间所能处理的资源量=Sql执行时间
所以为减少Sql执行时间:
(1)可以增大Sql单位时间所能处理的资源量。
(2)可以减少Sql所需处理的资源总量。
常见的是方法(2),即减少Sql所需处理的资源总量,就是减少执行sql所处理的行数。
2、 减少全表扫描。
减少全表扫描,主要手段就是建立索引,索引就好比一本书的目录,当你需要查询某篇文章时,不需要从头到尾把书的每页都查一遍,直接看目录就能找到了。
在没有建索引的情况下,从数据库查找某一条数据,就必须进行全表扫描,即对所有数据进行一次遍历。但即使在建立了索引的情况下,也会出现类似情况发生,因此要尽量避免全表扫描。
二、优化方法:
结合上面两点,总结如下:
1、 尽量减少对数据库的访问次数。
多次连接数据库会消耗大量时间,能用一句SQL查出来的尽量不要使用多个SQL查。
2、尽量把使用索引的列放在where条件首列。
3、不要过多地使用通配符*,而是使用查询列。
4、避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描。
考虑将null的列设置默认值0.
5、尽量避免在where子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
6、避免在where子句中使用or来连接条件,否则将导致引擎放弃使用索引而进行全表扫描。
7、in和not in也要慎用,IN会使系统无法使用索引,而只能直接搜索表中的数据。
考虑使用between … and …
8、尽量避免在索引过的字符数据中,使用非打头字母搜索。这也使得引擎无法利用索引。
SELECT * FROM table1 WHERE col1 LIKE ‘%L%’
改为:
SELECT * FROM table1 WHERE col1 LIKE ‘L%’
9、尽量避免在 where 子句中对字段进行表达式操作,不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算
SELECT * FROM table1 WHERE col1/2=100
10、在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致。
11、尽量把使用的索引放在选择的首列。
相关推荐
6. **错误处理和性能优化**:考虑到网络条件和数据库大小,可能需要对同步过程进行错误处理和性能优化,例如分批同步、断点续传等。 在提供的压缩包子文件的文件名称列表中,"www.pudn.com.txt"可能是一个包含更多...
宾馆客房管理系统是现代酒店业不可或缺的一部分,它利用先进的信息技术,尤其是SQL数据库,实现对客房、客户、员工等信息的高效管理,提升服务质量,优化运营成本,增强市场竞争力。本系统的核心是通过E-R(实体-...
总结起来,动感下载系统XP v2.0 SQL版是一款功能完备、性能卓越的下载管理系统,其批量生成静态页面、使用MS SQL数据库、丰富的下载管理功能以及开放源代码等特点,使其成为搭建专业下载站点的理想选择。对于开发者...
总结一下,实现“网页上传且将Excel里数据传到数据库”涉及的技术和步骤包括:前端文件上传接口、后端文件接收与处理、Excel读取库、数据清洗、数据库操作、异常处理、安全策略等。每个环节都需要精心设计和优化,以...
总结来说,房屋租赁管理系统数据库的设计与实现是一个综合性的项目,涵盖了数据库设计的基本步骤,包括需求分析、概念设计、逻辑设计、物理设计和系统实现。通过这个课程设计,学生能够深入理解数据库系统的核心原理...
- **SQL语句优化**:利用视图和存储过程增强数据库访问的安全性和性能。 #### 五、总结 汽车租赁管理系统是现代汽车租赁行业中不可或缺的一部分,它不仅能够提高公司的管理效率,还能帮助公司更好地服务客户。通过...
实现过程中需要进行数据库建模、编写SQL语句创建表、设置关系、设计用户界面以及编写后台处理逻辑。 4.2 界面设计代码 这部分详细介绍了各个功能模块的界面设计和对应的代码实现。 五、实验总结 5.1 实验中遇到的...
本系统采用JSP 2.0作为前端开发语言,结合SQL Server作为后台数据库,以实现数据的存储和查询。JSP 2.0提供了丰富的功能,便于开发动态网页,而SQL Server则为数据管理提供了稳定、高效的平台。 三、需求分析与功能...
总结:本文通过具体的百度面试题目,深入讨论了数据库设计优化、查询优化和大规模数据处理中的外部排序策略,这些都是在IT行业中处理大数据和高并发场景的关键技术。对于面试者来说,理解和掌握这些知识点将有助于...
- **开发工具**:SQL Server、MySQL等关系型数据库管理系统。 - **开发语言**:SQL用于数据库操作。 - **界面设计**:提供简洁直观的用户界面,便于操作。 #### 八、测试与调试 - **功能测试**:确保所有功能正常...
总结来说,《威博文件管理系统 3.0[JAVA+SQL Server版]》是一个结合了先进技术和企业实际需求的文件管理平台,其强大的功能和灵活的扩展性,使得它在企业信息化建设中扮演着重要角色。对于希望提升文件管理水平和...
5. **性能优化与安全性考虑**:对系统进行性能测试,并采取措施增强系统的稳定性和安全性。 #### 二、关键技术介绍 ##### 2.1 SSM框架 SSM框架是Spring、SpringMVC和MyBatis三个开源框架的组合,它们在Java Web...
通过它的可视化界面,用户可以方便地进行SQL编写、数据库对象浏览、数据编辑和查询,同时提供了强大的图表和报告生成功能,帮助分析和理解数据库性能。 接下来是"SecureCRT",这是一款流行的终端模拟器软件,主要...
该系统的开发成本较低,主要使用免费或低成本的开发工具,如Microsoft Visual Studio 2010和SQL Server 2008,这使得经济可行性得以保障。随着计算机的普及和硬件价格的下降,系统的实施变得更加容易。开发出的系统...
- **数据库概要说明**:在SQL Server 2000中创建名为`myhotel`的数据库,其中包括多个数据表,如`checkinregtable`(入住登记表)、`checkoutregtable`(退房登记表)、`guazhanginfo`(挂账信息表)等。...
总结,车辆管理系统是一个涉及多个层面的复杂项目,包括系统架构设计、数据库设计、用户角色划分、功能模块实现以及性能优化等。通过SQL Server数据库的支持,可以有效地管理和维护大量的车辆信息,提供高效、安全的...
7. 数据库管理:除了源码,该压缩包还包含了数据库文件,意味着用户可以直接导入数据,快速启动网站,无需从零开始构建内容。 8. 扩展性:FeitecCMS可能提供了插件系统或者API接口,方便用户添加新的功能或与第三方...