欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » SQLServer教程 » 正文

热门阅读

SQL基础教程及代码优化(三)

创建时间:2011年06月23日 21:32  阅读次数:(5137)
分享到:
1.5.冗余VS第三范式
1.第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。表的每一行只包含一个实例的信息。通俗地说,每个列只能包含一种含义,每一条数据只能包含一个表数据。

2.第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。通俗地说,表必须有主键。(消除部分子函数依赖)

3.第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。通俗地说,表不应该包括冗余栏位。 (消除传递依赖)

4.优化目的的冗余:以空间换时间。减少联接和复杂度。

5.静态化目的的冗余:减少对外纠纷。

1.6.表的水平、垂直分割
1.6.1.水平分割:将表分为多个表。
每个表包含的列数相同,但是行更少。如保存不同月份数据的表、按区域划分数据的表。(联合视图技术、数据转移)

1.6.2.垂直分割:将原始表分成多个只包含较少列的表。
如部分列只用于特定领域

2.Select语句优化
2.1.连接查询的优化(Inner/outer/full)
–Inner Join:两个表都满足连接条件
–Left [Outer] Join:只要求左侧表满足条件
–Right [Outer] Join:只要求右侧表满足条件
–Full [Outer] Join:左侧表或右侧表之一满足条件
–CROSS JOIN:交叉连接,无条件。

2.2.控制查询的行和列数量
–(1)Where(不返回无用的记录)
–(2)Top/Set RowCount
–(3)适当使用Distinct
–(4)Having
–(5)尽量避免使用’*’表示所有列
 
2.3.慎用Distinct

2.4.慎用Union
–使用OR或Union All代替

2.5.存在性判断
–替换count(*)
  
2.1.SQL Server2005的排名函数 
row_number:返回行序号,序号连续。
例:row_number() over(order by score desc) as rownumber
?rank:返回每行的排名,排名可以并列,并列排名后的下行排名顺序不等于前行加1,即排名不连续。

Dense_rank:返回每行的排名,排名可以并列,并列排名后的下行排名顺序等于前行加1,即排名连续。

ntile:将有序分区中的行分发到指定数目的组中。
例:ntile(4) over(order by score desc) as ntile
1Identity()拢?br />
select * from table1 where (num1 >0 or num2 >0) and num1<0
'
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 87+20=? 的结果(结果是:107)
结  果: