asp学习网: 首页 >> asp与数据库 >> sql server教程 >> sql的一些性能问题

sql的一些性能问题

今天碰到一个问题。每次看笔记评论,发觉都比较慢,于是检查。结果发觉一个有趣现象。
原始写法:
SQL="select * from vwTableA where id="&xid
RS.Open SQL, Conn, 0, 1
Conn.Execute "update TableA set hits=hits+1 where id="& xid
author=RS("author")
修改后写法:
SQL="select * from vwiTableA where id="&xid
RS.Open SQL, Conn, 0, 1
author=RS("author")
Conn.Execute "update TableA set hits=hits+1 where id="& xid
结果就是速度快了。不再有停顿。
vwTableA 是 TableA 的一个视图。
问题仅仅在于刚刚打开了一个数据表,然后马上执行一条相关的update语句。这里可能有
锁的竞争问题。

数据库索引对数据库性能的影响所有的问题在于索引的查找速度和内存的查找速度。
内存大,索引做得好,那么大部分查询只需要在索引中进行查询,而索引很容易被缓存。这样,查询会变得很快。比想象得还快。比如在1千万条记录中查找若干记录,可以如此计算,1千万条记录如果主键是int类型,因为主键都是唯一的,所以其实也是数据库中最大的一个索引。那么所占空间不过4*1e7, 40M内容,1千万条记录可能是很多个G了,经过优化的索引,一般主键是Hash表,一个索引大概是40M的10倍或更多,那么数据库查询就基本在内存中进行了。
但是hash还是很大,所以会强烈的依赖于内存的大小,其实数据库再大点,因为索引都过于大,那么情况就开始完全不同了。也许我们需要一个更大型的数据库才可以支持了。

DBCC INDEXDEFRAG一个有用的可以提高性能的语句。
用于整理索引碎片。就像整理磁盘碎片一样,索引也是有碎片的。

from:asp学习网/title:sql的一些性能问题/ time:2006-10-24 23:04:43

本文主题sql的一些性能问题

asp教程 ©2006-2007 aspxuexi.com | 关于站点 | 版权隐私 | 站内搜索
复制或者翻版 请于夜间进行