快速向表中插入100W条数据.sql

SET NOCOUNT ON;
USE master;
GO
----判断数据库TestDB是否存在,即创建数据库
IF db_id('TestDB') IS NULL
CREATE DATABASE TestDB
GO
USE TestDB
GO
---判断Nums 表是否存在,存在即将其删除
IF OBJECT_ID('dbo.Nums') IS NOT NULL
     DROP TABLE dbo.Nums;
GO
---重新创建表
CREATE TABLE dbo.Nums(
id int NOT NULL PRIMARY KEY,
name nvarchar(50) NULL
);
DECLARE @max AS int,@rc AS int;
SET @max=250000;
SET @rc=1;
INSERT INTO dbo.Nums(id,name) VALUES(1,'张三');
/* 模拟其执行过程
SELECT id+1,'张三' FROM dbo.Nums
INSERT INTO dbo.Nums(id,name) SELECT id+1,'张三' FROM dbo.Nums
SELECT id+2,'张三' FROM dbo.Nums
INSERT INTO dbo.Nums(id,name) SELECT id+2,'张三' FROM dbo.Nums
SELECT id+4,'张三' FROM dbo.Nums
INSERT INTO dbo.Nums(id,name) SELECT id+4,'张三' FROM dbo.Nums

select * from dbo.Nums
*/
WHILE @rc*2<=@max
BEGIN
    INSERT INTO dbo.Nums(id,name) SELECT id+@rc,'张三' FROM dbo.Nums
    SET @rc=@rc*2;
END  
print(@rc)
INSERT INTO dbo.Nums(id,name)
SELECT id+@rc,'张三' FROM dbo.Nums WHERE id+@rc<=@max
GO


select top 100 * from Nums where id not in 
(select top 900 id from Nums order by id asc) 
order by id asc

select * from (select top 100 * from 
(select top 1000 id from Nums order by id asc) a
order by a.id desc) b 
order by b.id asc
posted @ 2012-08-03 11:49  xust  阅读(854)  评论(0)    收藏  举报