WEB开发网
开发学院数据库MSSQL Server SQL Server性能优化综述 阅读

SQL Server性能优化综述

 2008-08-27 09:57:43 来源:WEB开发网   
核心提示: G、 注意排序规则,用CREATE TABLE建立的临时表,SQL Server性能优化综述(7),如果不指定字段的排序规则,会选择TEMPDB的默认排序规则,应该注意:A、NOT IN、NOT EXISTS的相关子查询可以改用LEFT JOIN代替写法,比如:SELECTPUB_NAME

G、 注意排序规则,用CREATE TABLE建立的临时表,如果不指定字段的排序规则,会选择TEMPDB的默认排序规则,而不是当前数据库的排序规则。如果当前数据库的排序规则和TEMPDB的排序规则不同,连接的时候就会出现排序规则的冲突错误。一般可以在CREATE TABLE建立临时表时指定字段的排序规则为DATABASE_DEFAULT来避免上述问题。

5、 子查询的用法

子查询是一个 SELECT 查询,它嵌套在 SELECT、INSERT、UPDATE、DELETE 语句或其它子查询中。任何允许使用表达式的地方都可以使用子查询。

子查询可以使我们的编程灵活多样,可以用来实现一些特殊的功能。但是在性能上,往往一个不合适的子查询用法会形成一个性能瓶颈。

如果子查询的条件中使用了其外层的表的字段,这种子查询就叫作相关子查询。相关子查询可以用IN、NOT IN、EXISTS、NOT EXISTS引入。

关于相关子查询,应该注意:

A、NOT IN、NOT EXISTS的相关子查询可以改用LEFT JOIN代替写法。比如:

   SELECTPUB_NAME
FROMPUBLISHERS
WHEREPUB_IDNOTIN
(SELECTPUB_ID
FROMTITLES
WHERETYPE='BUSINESS')

可以改写成:

   SELECTA.PUB_NAME
FROMPUBLISHERSALEFTJOINTITLESB
ONB.TYPE='BUSINESS'AND
A.PUB_ID=B.PUB_ID
WHEREB.PUB_IDISNULL
SELECTTITLE
FROMTITLES
WHERENOTEXISTS
(SELECTTITLE_ID
FROMSALES
WHERETITLE_ID=TITLES.TITLE_ID)
可以改写成:
SELECTTITLE
FROMTITLESLEFTJOINSALES
ONSALES.TITLE_ID=TITLES.TITLE_ID
WHERESALES.TITLE_IDISNULL

B、 如果保证子查询没有重复 ,IN、EXISTS的相关子查询可以用INNER JOIN 代替。比如:

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:SQL Server 性能

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接