解读SQL Server数据库开发要注意的21点(2)_Mssql数据库教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:如何提高SQL语句性能
在本文中,将讲述四项技术,这些技术可用于提高基于SQLServer的性能或改善其可伸缩性,将仔细说明LEFTJOIN、CROSSJOIN的使用以及IDENTITY值的检索。请记住,根本没有神奇的解决方案。调整您的数据库及其查询需要占用时间、进行分析,还需要大量的测试。这些技


13、不要打开大的数据集 
一个经常被提出的问题是:我怎样才能迅速的将100000条记录添加到ComboBox中?这是不对的,你不能也不需要这样做。很简单,你的用户要浏览100000条记录才能找到需要的记录,他一定会诅咒你的。在这里,你需要的是一个更好的UI,你需要为你的用户显示不超过100或200条记录。 
14、不要使用服务器端游标 
与服务器端游标比起来,客户端游标可以减少服务器和网络的系统开销,并且还减少锁定时间。 
15、使用参数查询 
有时,我在CSDN技术论坛看到类似这样的问题:“SELECT * FROM a WHERE a.id=’A’B,因为单引号查询发生异常,我该怎么办?”,而普遍的回答是:用两个单引号代替单引号。这是错误的。这样治标不治本,因为你还会在其他一些字符上遇到这样的问题,更何况这样会导致严重的bug,除此以外,这样做还会使SQL Server的缓冲系统无法发挥应有的作用。使用参数查询, 釜底抽薪,这些问题统统不存在了。 
16、在程序编码时使用大数据量的数据库 
程序员在开发中使用的测试数据库一般数据量都不大,可经常的是最终用户的数据量都很大。我们通常的做法是不对的,原因很简单:现在硬盘不是很贵,可为什么性能问题却要等到已经无可挽回的时候才被注意呢? 
17、不要使用INSERT导入大批的数据 
请不要这样做,除非那是必须的。使用UTS或者BCP,这样你可以一举而兼得灵活性和速度。 
18、注意超时问题 
查询数据库时,一般数据库的缺省都比较小,比如15秒或者30秒。而有些查询运行时间要比这长,特别是当数据库的数据量不断变大时。 
19、不要忽略同时修改同一记录的问题 
有时候,两个用户会同时修改同一记录,这样,后一个修改者修改了前一个修改者的操作,某些更新就会丢失。处理这种情况不是很难:创建一个timestamp字段,在写入前检查它,如果允许,就合并修改,如果存在冲突,提示用户。 
20、在细节表中插入纪录时,不要在主表执行SELECT MAX(ID) 
这是一个普遍的错误,当两个用户在同一时间插入数据时,这会导致错误。你可以使用SCOPE_IDENTITY,IDENT_CURRENT和IDENTITY。如果可能,不要使用IDENTITY,因为在有触发器的情况下,它会引起一些问题(详见这里的讨论)。 
21、避免将列设为NULLable 
如果可能的话,你应该避免将列设为NULLable。系统会为NULLable列的每一行分配一个额外的字节,查询时会带来更多的系统开销。另外,将列设为NULLable使编码变得复杂,因为每一次访问这些列时都必须先进行检查。 
我并不是说NULLS是麻烦的根源,尽管有些人这样认为。我认为如果你的业务规则中允许“空数据”,那么,将列设为NULLable有时会发挥很好的作用,但是,如果在类似下面的情况中使用NULLable,那简直就是自讨苦吃。 
CustomerName1 
CustomerAddress1 
CustomerEmail1 
CustomerName2 
CustomerAddress2 
CustomerEmail3 
CustomerName1 
CustomerAddress2 
CustomerEmail3 
如果出现这种情况,你需要规范化你的表了。 

分享:揭秘加快Sql server时间查询速度的办法
数据量大的情况下 Sql server时间比较查询的速度是比较慢的,如果 在access中进行时间的比较,sql语句很简单,select*fromtablewherethetime#\now()\#这样即可。 但在mssql就不能这样,要用datediff语句和getdate()函数进行比较。 如selectcount(*)fromtab

共2页上一页12下一页
来源:模板无忧//所属分类:Mssql数据库教程/更新时间:2010-02-26
相关Mssql数据库教程