优化sql查询
来源:互联网 发布:三菱plc编程软件fx 编辑:程序博客网 时间:2024/06/05 16:08
优化sql查询
如何写出高性能的sql语句
- 1.什么叫执行计划?
- 2.统一sql语句写法
- 3.sql语句尽量简单
- 4.使用临时表
- 5.采用绑定变量
- 6.优化索引
1.什么叫执行计划?
执行计划是数据库根据sql语句和相关表的统计信息坐出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条sql语句如果用来从一个n条记录中查询其中一条,那查询优化器会选择“索引扫描”方式。
该表如果使用了归档,那查询优化器就会改变方案,采用“全表扫描”方式。
执行计划并不是固定的,所以要产生一个正确的“执行计划”要注意:
sql语句是否清晰地告诉查询优化器要干什么?
- 查询优化器:负责生成 SQL 语句的有效执行计划的 SQL Server 数据库引擎组件(详解–浅析SQL Server查询优化器的工作原理)
- 归档:存储有组织的数据,目的是长时间存放有组织的数据集,确保其将来能够被精细地检索
2.统一sql语句写法
对于以下两句sql语句,程序员认为是相同的,数据库查询优化器认为是不同的
select*from table_name
select*From table_name
其实就是大小写不同,查询分析器就认为是不同的sql语句进行两次解析。所以作为程序员应该保证相同的查询语句在如何地方都一致。
3.sql语句尽量简单
经常看到,我们在进行sql查询的时候有些sql语句非常非常复杂。一般来说这么复杂的语句通常是有问题的。一般,将一个Select语句结果作为子集,然后从该子集中再进行查询,这种一层嵌套语句还是比较常见,但是根据经验。超过3层嵌套,查询优化器很容易给出错误的执行计划,因为它被绕晕了。
4.使用临时表
简化sql语句的重要方法就是采用临时表暂存中间结果。临时表的好处远远不止这些,将临时结果暂时存在临时表,后面的查询就查询临时表了,就避免程序多次扫描主表。
5.采用绑定变量
select*from table_name where time > ‘2016-05-23 09:15:02’
select*from table_name where time > ‘2016-05-25 09:00:00’
以上两句语句,查询优化器认为是不同的sql语句,需要解析两次。如果采用绑定变量
select*from table_name where time > @time
@time变量可以传入任何值,这样大量类似查询可以重用该执行计划这可以大大降低数据库解析sql语句的负担。
一次解析,多次重用,是提高数据库效率的原则
6.优化索引
创建有用的索引是提高查询性能的最重要方法之一。
与大多数性能优化方法一样。此方法也有一些缺点。如:使用较多索引时,SELECT查询运行速度可能会更快。但是DML(INSERT,UPDATE和DELETE)操作的速度将显著减慢,因为对于每个操作都必须维护更多的索引。因此,您的查询主要包含SELECT语句,则使用较多的索引是非常有帮助的,如果程序需要执行许多DML操作,就有必要控制创建的索引数。(详解)
- 查询优化【SQL优化】
- 18 SQL优化--查询优化
- sql查询优化 索引优化
- sql查询优化 索引优化
- SQL查询优化,索引优化
- sql查询优化 索引优化
- SQL语句优化(查询优化)
- SQL 查询优化 索引优化
- SQL分页查询优化
- 查询优化 sql
- 查询优化 sql
- sql查询优化
- sql查询优化
- sql查询优化
- SQL查询优化~
- SQL 查询优化方法
- SQL Server查询优化
- SQL Server查询优化.
- Swift - Realm数据库的使用详解(附样例)
- android中使用iconfont图标字体
- 常用数据结构
- 细说 #pragma pack(n)
- 正则表达式
- 优化sql查询
- 利用java反射机制调用类的public公有方法的例子
- iBeacon如何定位
- Androin学习笔记四十:OutputStream(示例,出错代码)
- iOS开发 UITableView 常用细节
- 《数据挖掘》学习笔记——认识数据(2)
- MyElipse6.5环境下java调用vs2010动态链接库DLL人脸检测
- Hive的数据存储(内部表,外部表,分区表,桶表,视图)
- 跨域DOMAIN实现原理