SQL基本教程及代码优化(三)
Archive非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差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)
–InnerJoin:两个表都满意毗连前提
–LeftJoin:只需求左边表满意前提
–RightJoin:只需求右边表满意前提
–FullJoin:左边表或右边表之一满意前提
–CROSSJOIN:交织毗连,无前提。
2.2.把持查询的行和列数目
–(1)Where(不前往无用的纪录)
–(2)Top/SetRowCount
–(3)得当利用Distinct
–(4)Having
–(5)只管制止利用’*’暗示一切列
2.3.慎用Distinct
2.4.慎用Union
–利用OR或UnionAll取代
2.5.存在性判别
–交换count(*)
2.1.SQLServer2005的排名函数
row_number:前往行序号,序号一连。
例:row_number()over(orderbyscoredesc)asrownumber
?rank:前往每行的排名,排名能够并列,并列排名后的下行排名按次不即是前行加1,即排名不一连。
Dense_rank:前往每行的排名,排名能够并列,并列排名后的下行排名按次即是前行加1,即排名一连。
ntile:将有序分区中的行分发到指定命目标组中。
例:ntile(4)over(orderbyscoredesc)asntile
1Identity()因此我们的方案中要构造这种逆操作。Event_type增加一种FLASHBACK_EVENT。这类操作形式与Query_Event相同,都是简单的SQL语句,只是包含了将数据恢复的操作。 微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。 备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。 不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关 SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。) SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。 sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西 varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。 很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。
页:
[1]