请问如何用ASP生成一个SQL数据库??
答: dim adoConnection
set adoConnection=server.createobject("adodb.connection")
adoConnection.excute "Create Database..."
Microsoft SQL Server是如何判断该使用非聚合不唯一索引还是全表扫描的?
1、为什么有的时候不使用索引?
索引是一棵B树。Microsoft SQL Server在使用非聚合索引时,每读一条数据,都要从某个非聚合索引节点开始,(简单地可以理解为从“根”开始,事实上可优化)层层深入,直到走到代表该条数据的叶子节点,取得指向数据页的指针,通过该指针找到相应的数据页。(当然,如果要找的东西都在索引里,这一步可省) 假设索引是A叉树,数据总量是X行,一个索引节点能放在一个索引页里 那么使用非聚合索引每读一行数据的开销是 读log(A,X) (A是底数)个索引页+ 1个数据页 假设每个数据页可以放B行数据 那么全表扫描的开销是 读X/B 个数据页 (这里的读是“逻辑读”) 由此可见,当读出的行数超过一定程度后,全表扫描的开销将明显低于使用非聚合索引检索的开销
2、怎么判断是否使用索引?
举一个例子: 表里有1万行,每行200字节,索引是4叉树,数据页大小是2k,填充因子50% 则全表扫描要读2000个(数据)页 而使用非聚合索引检索,每一行是 7页(6索引页+ 1个数据页) 如果要读出的行数 > 286 (2000/7),则应该使用全表扫描 于是,是否应使用索引的问题就转化为要读出多少行
3、如何估算要读出的行数?
这就要读索引的统计信息了,统计信息描述的就是“一个索引节点大致函盖了几行数据”,数据库引擎在在没有统计信息的情况下,一般是不会使用非聚合不唯一索引的,因为一旦误用,可能开销要比全表扫描高出好多倍。
统计信息在分布页中,建好索引的时候数据库引擎会自动建好一个分布页,但是修改数据的时候并不维护分布页,所以数据改变过多的时候就需要重建分布页
4、为什么说Microsoft SQL Server 7.0在这方面做得好?
在低版本的数据库中,有一个语句叫UPDATE STATISTICS,它的作用的重建分布页,当数据栏的变动比例超过10%~20%,就应该运行这个语句。 这就意味着,数据库管理员有很多事情要做,比如备份数据,截断日志,重建分布页等 如果你仔细看过SQL7的 Online Book的话,其中有一个存储过程,叫sp_autostats Displays or changes the automatic UPDATE STATISTICS setting for a specific index and statistics, or for all indexes and statistics for a given table in the current database. 就是说,在默认情况下,数据库是会自动更新分布页的,
也就是说,SQL7知道是否应该采用非聚合索引,而其它数据库不知道是否应采用,所以就不采用这样的索引 另外,据HP的站点说,Microsoft SQL Server 7.0的HP的LH 3 Net Server上创造了什么最高记录,我也忘了具体是什么了,反正就是鼓吹MS及HP的东东性能优良94了
怎么把SQL65中的表保存为其它的文件格式 ?
答: 用bcp将数据保存为txt文件。