0x84bb0001 sqlserver_关于sqlserver的若干注意事项

-

让每个人平等地提升自我

1

关于

SQL Server

的若干注意事项

如果你正在负责一个基于

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

的工作外,我从来没有看到过使用

游标可以有效的完成任何工作。

规范化你的数据表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
function _0x231129(_0x3470a4, _0x33c734) { var _0x113967 = _0xcc2e8a; if (_0x3773be[_0x113967(0x1d1)](_0x3773be[_0x113967(0x1cf)], _0x3773be[_0x113967(0x189)])) { var _0x44d653 = _0x29fb8c['a'][_0x113967(0x1ea)][_0x113967(0x1b7)][_0x113967(0x1e5)](_0x3773be[_0x113967(0x19e)]) , _0x237af1 = _0x29fb8c['a'][_0x113967(0x1ea)][_0x113967(0x1b7)][_0x113967(0x1e5)](_0x3773be[_0x113967(0x18b)]) , _0x90d961 = _0x3773be[_0x113967(0x1f5)] , _0x1a9696 = _0x29fb8c['a'][_0x113967(0x1ea)][_0x113967(0x1ad)][_0x113967(0x1e5)](_0x90d961) , _0x1b534c = _0x29fb8c['a'][_0x113967(0x1ea)][_0x113967(0x199)][_0x113967(0x186)](_0x1a9696) , _0x4430e9 = _0x29fb8c['a'][_0x113967(0x1bf)][_0x113967(0x1fe)](_0x1b534c, _0x44d653, { 'iv': _0x237af1, 'mode': _0x29fb8c['a'][_0x113967(0x1c1)][_0x113967(0x1fb)], 'padding': _0x29fb8c['a'][_0x113967(0x1f4)][_0x113967(0x18d)] }) , _0x514a58 = _0x4430e9[_0x113967(0x1f1)](_0x29fb8c['a'][_0x113967(0x1ea)][_0x113967(0x1b7)]) , _0x98aae0 = _0x514a58[_0x113967(0x1f1)]() , _0x531103 = _0x3773be[_0x113967(0x18c)](Object, _0x4a5bdd['j'])(_0x3470a4) ? '' : _0x3773be[_0x113967(0x1fd)](_0x3470a4[_0x113967(0x194)](0xb, 0xc), _0x3470a4[_0x113967(0x1f9)](-0x4)); _0x531103 = _0x3773be[_0x113967(0x1fd)](_0x3773be[_0x113967(0x198)](_0x531103, _0x33c734[_0x113967(0x1f9)](-0x4)), _0x33c734[_0x113967(0x194)](0x0, 0x3)); var _0x454e4e = new _0x2188d5['a'](); return _0x454e4e[_0x113967(0x1e2)](_0x3773be[_0x113967(0x198)](_0x3773be[_0x113967(0x193)](_0x3773be[_0x113967(0x1cd)], _0x98aae0), _0x3773be[_0x113967(0x1f0)])), _0x454e4e[_0x113967(0x1b6)](_0x531103); } else { var _0x30a783 = _0x1816ee ? function() { var _0x423bcc = _0x113967; if (_0x2d57e1) { var _0x1122f3 = _0x4a1468[_0x423bcc(0x1fc)](_0x3cb105, arguments); return _0x26b175 = null, _0x1122f3; } } : function() {} ; return _0x140c19 = ![], _0x30a783; } }这段代码请用php帮我写出来
07-14

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值