作者:怡红公子
日期:00-6-21 下午 02:02:49
Microsoft SQL Server 2000的索引并没有太多变化,本来还以为会有R-Tree、Bitmap Index之类的东东出来呢,结果很让人失望:(
不过还是有一些变化的,第三讲里面已经说过了可以给View加索引,还有一点就是可以给计算列(Computed Columns)加索引。
?不知道什么是Computed Columns?我倒!
其实这东东我也就用过一次,抄一段Online Book的Sample Code吧
CREATE TABLE t2 (a int, b int, c int, x float,
y as CASE x
WHEN 0 THEN a
WHEN 1 THEN b
ELSE c
END)
CREATE TABLE mytable
(
low int,
high int,
myavg AS (low + high)/2
)
看明白了吧,就是as后面加一个计算值而已,OK, continue
现在虽然可以给计算列加索引了,但是还是受到一些限制的,比如说,象avg、sum这样的和整张表都有关的计算值就不可以加索引,还有,具有不确定计算值的也不可以加索引,表达式中使用的字段也必须是这张表中的。
SQL 2000里面对索引作了一些优化,不过具体的细节不是很清楚,我所知道的就是在多CPU的机器上建立索引的时候可以使用平行多线程来扫描和分类数据。实现的技术细节没有太多的意思,简单介绍一下就是,服务器在建立索引之前对表做一个快速的随机扫描,把数据按照设置的平行度分为几块,然后每个线程利用过滤器对基表进行查询,分别建立索引结构,每个线程都完成之后再把这些索引连接起来。
SQL 2000中很多地方对多CPU和Clustered Server做了优化,可惜现在的资料太少,不过使用一段时间就会慢慢发现的了。
下期预告
全文检索
附录:
不确定返回值的函数
@@ERROR
@@IDENTITY
@@ROWCOUNT
@@TRANCOUNT
APP_NAME
CURRENT_TIMESTAMP
CURRENT_USER
DATENAME
FORMATMESSAGE
GETANSINULL
GETDATE
GetUTCDate
HOST_ID
HOST_NAME
IDENT_INCR
IDENT_SEED
IDENTITY
NEWIDPERMISSIONS
SESSION_USER
STATS_DATE
SYSTEM_USER
TEXTPTR
TEXTVALID
USER_NAME