关于SQL Server的若干注意事项

2008-04-02 10:30:38来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  假如您正在负责一个基于SQL Server的项目,或您刚刚接触SQL Server,您都有可能要面临一些数据库性能的问题,这篇文章会为您提供一些有用的指导(其中大多数也能够用于其他的DBMS)。

  在这里,我不打算介绍使用SQL Server的窍门,也不能提供一个包治百病的方案,我所做的是总结一些经验----关于如何形成一个好的设计。这些经验来自我过去几年中经受的教训,一直来,我看到许多同样的设计错误被一次又一次的重复。

  您了解您用的工具吗?

  不要轻视这一点,这是我在这篇文章中讲述的最关键的一条。也许您也看到有很多的SQL Server程式员没有掌控全部的T-SQL命令和SQL Server提供的那些有用的工具。

  “什么?我要浪费一个月的时间来学习那些我永远也不会用到的SQL命令???”,您也许会这样说。对的,您无需这样做。但是您应该用一个周末浏览任何的T-SQL命令。在这里,您的任务是了解,将来,当您设计一个查询时,您会记起来:“对了,这里有一个命令能够完全实现我需要的功能”,于是,到MSDN查看这个命令的确切语法。

  不要使用游标

  让我再重复一遍:不要使用游标。假如您想破坏整个系统的性能的话,他们倒是您最有效的最好选择办法。大多数的初学者都使用游标,而没有意识到他们对性能造成的影响。他们占用内存,还用他们那些不可思议的方式锁定表,另外,他们简直就像蜗牛。而最糟糕的是,他们能够使您的DBA所能做的一切性能优化等于没做。不知您是否知道每执行一次FETCH就等于执行一次SELECT命令?这意味着假如您的游标有10000条记录,他将执行10000次SELECT!假如您使用一组SELECT、UPDATE或DELETE来完成相应的工作,那将有效率的多。

  初学者一般认为使用游标是一种比较熟悉和舒适的编程方式,可很不幸,这会导致糟糕的性能。显然,SQL的总体目的是您要实现什么,而不是怎样实现。

  我曾用T-SQL重写了一个基于游标的存储过程,那个表只有100,000条记录,原来的存储过程用了40分钟才执行完毕,而新的存储过程只用了10秒钟。在这里,我想您应该能够看到一个不称职的程式员究竟在干了什么!!!

  我们能够写一个小程式来取得和处理数据并且更新数据库,这样做有时会更有效。记住:对于循环,T-SQL无能为力。

  我再重新提醒一下:使用游标没有好处。除了DBA的工作外,我从来没有看到过使用游标能够有效的完成任何工作。

共3页。 1 2 3 :

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 五种提高SQL Server性能的方法

下一篇: 经典源码——SQL SERVER结构浏览器