关闭

优化sql 语句的几种方式

2183人阅读 评论(0) 收藏 举报
分类:


1、 首先要搞明白什么叫执行计划?

执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条记录,那查询优化器会选择“索引查找”方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用 “全表扫描”方式。

可见,执行计划并不是固定的,它是“个性化的”。产生一个正确的“执行计划”有两点很重要:

(1)    SQL语句是否清晰地告诉查询优化器它想干什么?

(2)    查询优化器得到的数据库统计信息是否是最新的、正确的?

2、 统一SQL语句的写法:否则数据库会进行两次解析

3、 不要把SQL语句写得太复杂:以来,一旦解析失败,就得重新再来,二来,数据库有时会不能识别

4、 绑定变量窥测,就想hibernate 的hql语句一样, :原因:一次解析,多次使用、

5.只在必要的情况下才使用begin tran :因为启动事物期间,会全盘锁住sql语句所占用的表的字段

聚集索引没有建在表的顺序字段上,该表容易发生页分裂





在sqlserver 上

3、SQL Server 表连接的三种方式

(1) Merge Join

(2) Nested Loop Join

(3) Hash Join

SQL Server 2000只有一种join方式——Nested Loop Join,如果A结果集较小,那就默认作为外表,A中每条记录都要去B中扫描一遍,实际扫过的行数相当于A结果集行数x B结果集行数。所以如果两个结果集都很大,那Join的结果很糟糕。

SQL Server 2005新增了Merge Join,如果A表和B表的连接字段正好是聚集索引所在字段,那么表的顺序已经排好,只要两边拼上去就行了,这种join的开销相当于A表的结果集行数加上B表的结果集行数,一个是加,一个是乘,可见merge join 的效果要比Nested Loop Join好多了。

如果连接的字段上没有索引,那SQL2000的效率是相当低的,而SQL2005提供了Hash join,相当于临时给A,B表的结果集加上索引,因此SQL2005的效率比SQL2000有很大提高,我认为,这是一个重要的原因。

总结一下,在表连接时要注意以下几点:

(1)    连接字段尽量选择聚集索引所在的字段

(2)    仔细考虑where条件,尽量减小A、B表的结果集

(3)    如果很多join的连接字段都缺少索引,而你还在用SQL Server 2000,赶紧升级吧。



0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

SQL语句优化方法

1.1    注释使用 在语句中多写注释,注释不影响SQL语句的执行效率。增加代码的可读性。 1.2    对于事务的使用 尽量使事务处理达到最短,如果事务太长最好按功能将事务分开执行(如:...
  • m13666368773
  • m13666368773
  • 2011-12-31 16:53
  • 6373

SQL语句优化方案

 1. 高效地进行SQL语句设计: 通常情况下,可以采用下面的方法优化SQL对数据操作的表现: (1)减少对数据库的查询次数,即减少对系统资源的请求,使用快照和显形图等分布式数据库对象可...
  • davistang
  • davistang
  • 2015-03-27 15:08
  • 2996

SQL Server查询优化方法(查询速度慢的原因很多,常见如下几种)

今天看到一位博友的文章,觉得不错,转载一下,希望对大家有帮助,更多文章,请访问:http://blog.haoitsoft.com 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的...
  • ningyuanhuo
  • ningyuanhuo
  • 2014-12-31 10:13
  • 54222

SQL优化大全

1. 优化SQL步骤 1. 通过 show status和应用特点了解各种 SQL的执行频率        通过 SHOW STATUS 可以提供服务器状态信息,也可以使用...
  • liu1pan2min3
  • liu1pan2min3
  • 2016-08-24 16:24
  • 118

sql优化的几种方法

在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考。 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ...
  • u011936251
  • u011936251
  • 2017-08-17 20:59
  • 7177

8个SQL语句常用优化技巧

要提高SQL语句的执行效率,最常见的方法就是建立索引,以及尽量避免全表扫描。在本章MySQL教程中,UncleToo给大家整理一些常见的SQL优化技巧,避免全表扫描。一个简单的优化,也许能让你的SQL...
  • csdnstudent
  • csdnstudent
  • 2014-10-23 15:31
  • 11035

SQL性能优化

  • 2014-12-20 10:21
  • 20KB
  • 下载

MySQL的几种优化方法

没索引与有索引的区别优点: 当表中有大量记录时,若要对表进行查询,如果没用建立索引,搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据...
  • u013474436
  • u013474436
  • 2015-11-18 16:13
  • 6013

Sql优化方法

我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享! (1)      选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析...
  • hugengyong
  • hugengyong
  • 2010-03-15 14:05
  • 20989

sql语句优化的13种方法

原文链接:http://blog.csdn.net/u012942818/article/details/53969972 1,什么是“执行计划”? 执行计划是数据库根据SQL语句和相关表的统计信息...
  • xie_xiansheng
  • xie_xiansheng
  • 2017-05-02 10:08
  • 548
    个人资料
    • 访问:448528次
    • 积分:7872
    • 等级:
    • 排名:第3098名
    • 原创:342篇
    • 转载:138篇
    • 译文:4篇
    • 评论:68条
    博客专栏