WEB开发网
开发学院数据库MSSQL Server 使用SQL Server时最容易忽略的21个问题 阅读

使用SQL Server时最容易忽略的21个问题

 2007-07-25 09:46:06 来源:WEB开发网   
核心提示: 我曾经用T-SQL重写了一个基于光标的存储过程,那个表只有100,000条记录,使用SQL Server时最容易忽略的21个问题(2),原来的存储过程用了40分钟才执行完毕,而新的存储过程只用了10秒钟,这个问题不太好把握,特别是涉及DELETE和UPDATE时,在这里,我想你应该可以看到

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

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

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

规范化你的资料表

为什么不规范化数据库?大概有两个借口:出于性能的考虑和纯粹因为懒惰。至于第二点,你迟早得为此付出代价。而关于性能的问题,你不需要优化根本就不慢的东西。我经常看到一些程序员“反规范化”数据库,他们的理由是“原来的设计太慢了”,可结果却常常是他们让系统更慢了。DBMS被设计用来处理规范数据库的,因此,记住:按照规范化的要求设计数据库。

不要使用SELECT *

这点不太容易做到,我太了解了,因为我自己就经常这样干。可是,如果在SELECT中指定你所需要的列,那将会带来以下的好处:

1 减少内存耗费和网络的带宽

2 你可以得到更安全的设计

3 给查询优化器机会从索引读取所有需要的列

了解你将要对数据进行的操作

为你的数据库创建一个健壮的索引,那可是功德一件。可要做到这一点简直就是一门艺术。每当你为一个表添加一个索引,SELECT会更快了,可INSERT和DELETE却大大的变慢了,因为创建了维护索引需要许多额外的工作。显然,这里问题的关键是:你要对这张表进行什么样的操作。这个问题不太好把握,特别是涉及DELETE和UPDATE时,因为这些语句经常在WHERE部分包含SELECT命令。

上一页  1 2 3 4  下一页

Tags:使用 SQL Server

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接