SQL Server性能优化综述
2008-08-27 09:57:43 来源:WEB开发网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 代替。比如:
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接