如果用TABLE SCAN ,当然a会慢,因为更多的数据需要读取
解决方案 »
- 来鸟问题
- 急!在SQL2000的SP里可否调用某DLL文件里面的函数?如果可以,怎么做?
- 问大家一个sql语句,主子表查询
- 什么时候该用存储过程?邹老大能给我发一些资料么
- 这样该怎么排序,才能达到我要的效果!!!!
- 请教一个集合的SQL语句
- SQL SERVER 2000安装后的问题
- 请大家帮帮忙!我的数据库突然出10039错误?怎样才能彻底解决这种错误的再次出现呢?
- 如何用SQL语句将本地数据库的一条记录添加到另一个数据库中?
- 用SQL一次核销多行数据的问题
- select distinct userId, username, otherdata from table
- 各位,请问怎么实现批量插入啊
the same speed
生成1000000条记录的表
select rownum=identity(int,1,1), aa=a.name+b.xtype into #ttt from
(select top 1000 name from sysobjects)as a,
(select top 1000 xtype from sysobjects) as b呵呵 看你sysobjects里有多少内容了
因为SQL SERVER会自动进行SCANTABLE,在SQL SERVER中如果你一次检索的数据超过全表的40%,SQL SERVER一般就不会用INDEX,而直接用表扫描。
而A表占用的PAGE较多,进行表扫描时的效率就低一些。
否则,由于表a和表b的记录量实在相差太大,数据库查询时只是一种虚拟查询,而实际的数据则分为多个片断存储在磁盘的不同部分,查询表a时自然会大量消耗I/O开销(要分别到多个不连续的磁盘片断中取得要查询的数据放入内存),所以查a表慢就是必然.
说明一下,一个表只能设一个聚簇索引
所以,楼上兄弟说得id,name都建聚簇索引不可能的。