笔记111 单表插入100W条记录还有博客园索引的测试结果
笔记111 单表插入100W条记录还有博客园索引的测试结果
1 --单表插入100W条记录还有博客园索引的测试结果 2 --测试网址:http://www.cnblogs.com/lzrabbit/archive/2012/05/21/2499389.html#2383857 3 4 --先删除所有表数据,在做测试之前要是一个空表 5 --USE pratice 6 --DELETE FROM dbo.test 7 --建立索引 8 --CREATE INDEX IX_ABC ON dbo.test(c,d) 9 10 --插入数据 100W条记录 11 --USE pratice 12 --DECLARE @MyCounter INT 13 --DECLARE @MyDecimal INT 14 --SET @MyCounter = 0 /*设置变量*/ 15 --SET @MyDecimal =0 16 -- 17 -- 18 -- 19 --WHILE @MyCounter <400000 --执行3次,第一次@MyCounter <300000 30W条记录 第二次@MyCounter <300000 60W条记录 第三次@MyCounter <400000 40W条记录 20 --BEGIN 21 --INSERT INTO dbo.test 22 --SELECT @MyCounter+1,'坏人','2011-8-2 21:21:00','超级坏',@MyDecimal+9 23 -- 24 -- 25 --SET @MyCounter = @MyCounter + 1 26 --SET @MyDecimal =@MyDecimal +1 27 --END 28 29 --看一下现在表有多少条记录 30 --SELECT COUNT(*) FROM dbo.test 31 32 ------------------------华丽的分割线---------------------------------------------------- 33 34 --第一种:select 后面没有索引的 结果两个语句都使用表扫描 35 --SET STATISTICS TIME ON 36 --SET STATISTICS IO ON 37 --SELECT a,b FROM dbo.test WHERE d='超级坏' 38 -- 39 --SELECT a,b FROM dbo.test WHERE c='2011-8-2 21:21:00' AND d='超级坏' 40 41 --(400000 行受影响) 42 --表 'test'。扫描计数 1,逻辑读取 5961 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 43 -- 44 --(1 行受影响) 45 -- 46 --SQL Server 执行时间: 47 -- CPU 时间 = 437 毫秒,占用时间 = 8649 毫秒。 48 --SQL Server 分析和编译时间: 49 -- CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。 50 -- 51 --(400000 行受影响) 52 --表 'test'。扫描计数 1,逻辑读取 5961 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 53 -- 54 --(1 行受影响) 55 -- 56 --SQL Server 执行时间: 57 -- CPU 时间 = 405 毫秒,占用时间 = 8552 毫秒。 58 --SQL Server 分析和编译时间: 59 -- CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。 60 -- 61 --SQL Server 执行时间: 62 -- CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。 63 64 --第二种:select 后面有索引的 65 66 --SELECT c,d FROM dbo.test WHERE d='超级坏' --索引扫描 67 -- 68 --SELECT c,d FROM dbo.test WHERE c='2011-8-2 21:21:00' AND d='超级坏' --索引查找 69 -- 70 --(400000 行受影响) 71 --表 'test'。扫描计数 3,逻辑读取 5606 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 72 -- 73 --(1 行受影响) 74 -- 75 --SQL Server 执行时间: 76 -- CPU 时间 = 640 毫秒,占用时间 = 8614 毫秒。 77 --SQL Server 分析和编译时间: 78 -- CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。 79 -- 80 --(400000 行受影响) 81 --表 'test'。扫描计数 1,逻辑读取 1953 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 82 -- 83 --(1 行受影响) 84 -- 85 --SQL Server 执行时间: 86 -- CPU 时间 = 203 毫秒,占用时间 = 8289 毫秒。 87 --SQL Server 分析和编译时间: 88 -- CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。 89 -- 90 --SQL Server 执行时间: 91 -- CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。