GUID和自增ID的比较_insert

1.单条插入

 

------------------------------------------------------------------------------------------------

 

--清空缓存

DBCC FREEPROCCACHE  WITH NO_INFOMSGS

DBCC FREESESSIONCACHE WITH NO_INFOMSGS

DBCC FREESYSTEMCACHE('All') WITH NO_INFOMSGS

DBCC DROPCLEANBUFFERS WITH NO_INFOMSGS

 

SET NOCOUNT on

 

DECLARE @费用ID int

SET @费用ID =7001000

 

 

 

CREATE TABLE #result

(

    状态  varchar(20),

    [test(毫秒)] INT,

    [test_id(毫秒)] INT,

    [test_guid(毫秒)] INT,

    [test_id_guid(毫秒)] INT,

    [test_id_guid1(毫秒)] INT

)

 

DECLARE @start INT

DECLARE @end   INT

SET @start=1

SET @end=100

 

WHILE (@start<=@end)

 

BEGIN      --循环开始

 

DBCC FREEPROCCACHE

DBCC FREESESSIONCACHE

DBCC FREESYSTEMCACHE('All')

DBCC DROPCLEANBUFFERS

 

     

declare @d datetime      

set @d = getdate()      

 

insert    test(费用_id, 水表编码, 水表口径, 水表用途, 收费方式, 水表状态, 本期抄表日, 上期读数, 本期读数, 实抄水量)

SELECT  @费用ID ,@费用ID,  15, 'YB',  'C1',  9 , '2011-05-05 00:00:00.000'   ,837   ,857   ,20

 

     

declare @result int      

select  @result = datediff(ms, @d, getdate())       

    

 

 

 

 

declare @d1 datetime      

set @d1 = getdate()      

 

insert    test_id(费用_id, 水表编码, 水表口径, 水表用途, 收费方式, 水表状态, 本期抄表日, 上期读数, 本期读数, 实抄水量)

SELECT  @费用ID ,@费用ID,  15, 'YB',  'C1',  9 , '2011-05-05 00:00:00.000'   ,837   ,857   ,20

 

 

declare @result1 int      

select  @result1 = datediff(ms, @d1, getdate())       

 

declare @d2 datetime      

set @d2 = getdate()      

 

insert    test_guid(费用_id, 水表编码, 水表口径, 水表用途, 收费方式, 水表状态, 本期抄表日, 上期读数, 本期读数, 实抄水量)

SELECT  @费用ID ,@费用ID,  15, 'YB',  'C1',  9 , '2011-05-05 00:00:00.000'   ,837   ,857   ,20

 

 

 

     

declare @result2 int      

select  @result2 = datediff(ms, @d2, getdate())       

 

declare @d3 datetime      

set @d3 = getdate()      

 

insert    test_id_guid(费用_id, 水表编码, 水表口径, 水表用途, 收费方式, 水表状态, 本期抄表日, 上期读数, 本期读数, 实抄水量)

SELECT  @费用ID ,@费用ID,  15, 'YB',  'C1',  9 , '2011-05-05 00:00:00.000'   ,837   ,857   ,20

 

 

declare @result3 int      

select  @result3 = datediff(ms, @d3, getdate())       

 

declare @d4 datetime      

set @d4 = getdate()      

 

insert    test_id_guid1(费用_id, 水表编码, 水表口径, 水表用途, 收费方式, 水表状态, 本期抄表日, 上期读数, 本期读数, 实抄水量)

SELECT  @费用ID ,@费用ID,  15, 'YB',  'C1',  9 , '2011-05-05 00:00:00.000'   ,837   ,857   ,20

 

     

declare @result4 int      

select  @result4 = datediff(ms, @d4, getdate())       

 

 

INSERT INTO #result

SELECT '正常',

       @result AS 'test(毫秒)',

       @result1 'test_id(毫秒)',

       @result2 'test_guid(毫秒)',

       @result3 'test_id_guid(毫秒)',

       @result4 'test_id_guid1(毫秒)'

 

SET @费用ID=@费用ID+1

SET @start=@start+1

 

END      --循环结束

        

 

 

 

SELECT *  FROM #result

UNION ALL

SELECT '最小值',

       min([test(毫秒)]),

       min([test_id(毫秒)]),

       min([test_guid(毫秒)]),

       min([test_id_guid(毫秒)]),

       min([test_id_guid1(毫秒)])

FROM #result

UNION  ALL

SELECT '平均值',

       AVG([test(毫秒)]),

       AVG([test_id(毫秒)]),

       AVG([test_guid(毫秒)]),

       AVG([test_id_guid(毫秒)]),

       AVG([test_id_guid1(毫秒)])

FROM #result

UNION ALL

SELECT '最大值',

       max([test(毫秒)]),

       max([test_id(毫秒)]),

       max([test_guid(毫秒)]),

       max([test_id_guid(毫秒)]),

       max([test_id_guid1(毫秒)])

FROM #result

 

--DROP TABLE #result

 ------------------------------------------------------------------------------------------------

 

 SELECT COUNT(*)  FROM #result  WHERE [test_id(毫秒)]>[test_guid(毫秒)]

 SELECT COUNT(*)  FROM #result  WHERE [test_id(毫秒)]>[test_id_guid(毫秒)]

 SELECT COUNT(*)  FROM #result  WHERE [test_id(毫秒)]>[test_id_guid1(毫秒)]

 SELECT COUNT(*)  FROM #result  WHERE [test_id(毫秒)]>[test_guid(毫秒)]

 

 

 

 状态 test(毫秒) test_id(毫秒) test_guid(毫秒) test_id_guid(毫秒) test_id_guid1(毫秒)
正常 106 16 23 3 0
正常 0 0 3 0 0
正常 0 0 0 0 0
正常 3 0 0 0 0
正常 3 0 0 0 0
正常 3 0 0 0 0
正常 0 0 3 0 0
正常 0 0 0 0 3
正常 0 0 0 0 0
正常 0 0 0 20 0
正常 0 0 0 3 0
正常 0 0 0 0 3
正常 0 0 0 3 0
正常 3 0 0 0 0
正常 3 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 3 0 0 0 0
正常 3 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 3 0 0 0 0
正常 3 0 0 0 0
正常 83 0 0 3 0
正常 0 0 0 3 0
正常 0 0 0 0 0
正常 3 0 0 0 0
正常 0 0 0 3 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 3 0 0
正常 0 0 0 3 0
正常 0 0 0 3 0
正常 3 0 0 0 16
正常 0 0 0 0 0
正常 3 0 3 0 0
正常 0 3 0 0 0
正常 3 0 0 10 0
正常 23 16 3 50 0
正常 13 0 0 0 3
正常 0 0 0 3 0
正常 0 36 13 10 3
正常 3 16 20 6 0
正常 0 0 6 6 6
正常 10 0 10 6 6
正常 10 0 3 0 0
正常 3 10 0 3 0
正常 3 10 6 3 3
正常 16 3 3 6 0
正常 3 0 0 0 0
正常 0 0 0 3 0
正常 0 0 0 0 0
正常 0 3 0 0 0
正常 0 0 0 0 56
正常 0 0 0 3 0
正常 0 0 0 0 0
正常 0 3 0 0 0
正常 0 3 0 0 0
正常 3 0 0 0 0
正常 3 0 0 0 0
正常 3 0 0 0 0
正常 0 0 0 0 6
正常 23 6 10 3 6
正常 0 26 0 13 0
正常 10 0 0 3 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 3
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 3 0 0 0
正常 0 0 3 0 0
正常 0 3 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 3 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 0 0 0 0 0
正常 3 0 0 0 0
正常 0 3 0 0 0
正常 3 0 0 0 0
正常 3 0 0 0 0
正常 0 0 3 0 0
正常 0 0 3 0 0
正常 0 0 10 0 3
最小值 0 0 0 0 0
平均值 3 1 1 1 1
最大值 106 36 23 50 56

 

2.多条插入

 

 

 

------------------------------------------------------------------------------------------------

 

--清空缓存

DBCC FREEPROCCACHE  WITH NO_INFOMSGS

DBCC FREESESSIONCACHE WITH NO_INFOMSGS

DBCC FREESYSTEMCACHE('All') WITH NO_INFOMSGS

DBCC DROPCLEANBUFFERS WITH NO_INFOMSGS

 

SET NOCOUNT on

 

 

 

CREATE TABLE #result

(

    状态  varchar(20),

    [test(毫秒)] INT,

    [test_id(毫秒)] INT,

    [test_guid(毫秒)] INT,

    [test_id_guid(毫秒)] INT,

    [test_id_guid1(毫秒)] INT

)

 

DECLARE @start INT

DECLARE @end   INT

SET @start=1

SET @end=20

 

WHILE (@start<=@end)

 

BEGIN      --循环开始

 

DBCC FREEPROCCACHE

DBCC FREESESSIONCACHE

DBCC FREESYSTEMCACHE('All')

DBCC DROPCLEANBUFFERS

 

     

declare @d datetime      

set @d = getdate()      

 

insert    test(费用_id, 水表编码, 水表口径, 水表用途, 收费方式, 水表状态, 本期抄表日, 上期读数, 本期读数, 实抄水量)

SELECT TOP 1000 费用_id, 水表编码, 水表口径, 水表用途, 收费方式, 水表状态, 本期抄表日, 上期读数, 本期读数, 实抄水量   from 抄表收费

 

     

declare @result int      

select  @result = datediff(ms, @d, getdate())       

    

 

 

 

 

declare @d1 datetime      

set @d1 = getdate()      

 

insert    test_id(费用_id, 水表编码, 水表口径, 水表用途, 收费方式, 水表状态, 本期抄表日, 上期读数, 本期读数, 实抄水量)

SELECT TOP 1000 费用_id, 水表编码, 水表口径, 水表用途, 收费方式, 水表状态, 本期抄表日, 上期读数, 本期读数, 实抄水量   from 抄表收费

 

 

declare @result1 int      

select  @result1 = datediff(ms, @d1, getdate())       

 

declare @d2 datetime      

set @d2 = getdate()      

 

insert    test_guid(费用_id, 水表编码, 水表口径, 水表用途, 收费方式, 水表状态, 本期抄表日, 上期读数, 本期读数, 实抄水量)

SELECT TOP 1000 费用_id, 水表编码, 水表口径, 水表用途, 收费方式, 水表状态, 本期抄表日, 上期读数, 本期读数, 实抄水量   from 抄表收费

 

 

 

     

declare @result2 int      

select  @result2 = datediff(ms, @d2, getdate())       

 

declare @d3 datetime      

set @d3 = getdate()      

 

insert    test_id_guid(费用_id, 水表编码, 水表口径, 水表用途, 收费方式, 水表状态, 本期抄表日, 上期读数, 本期读数, 实抄水量)

SELECT TOP 1000 费用_id, 水表编码, 水表口径, 水表用途, 收费方式, 水表状态, 本期抄表日, 上期读数, 本期读数, 实抄水量   from 抄表收费

 

 

declare @result3 int      

select  @result3 = datediff(ms, @d3, getdate())       

 

declare @d4 datetime      

set @d4 = getdate()      

 

insert    test_id_guid1(费用_id, 水表编码, 水表口径, 水表用途, 收费方式, 水表状态, 本期抄表日, 上期读数, 本期读数, 实抄水量)

SELECT TOP 1000 费用_id, 水表编码, 水表口径, 水表用途, 收费方式, 水表状态, 本期抄表日, 上期读数, 本期读数, 实抄水量   from 抄表收费

 

     

declare @result4 int      

select  @result4 = datediff(ms, @d4, getdate())       

 

 

INSERT INTO #result

SELECT '正常',

       @result AS 'test(毫秒)',

       @result1 'test_id(毫秒)',

       @result2 'test_guid(毫秒)',

       @result3 'test_id_guid(毫秒)',

       @result4 'test_id_guid1(毫秒)'

 

 

SET @start=@start+1

 

END      --循环结束

        

 

 

 

SELECT *  FROM #result

UNION ALL

SELECT '最小值',

       min([test(毫秒)]),

       min([test_id(毫秒)]),

       min([test_guid(毫秒)]),

       min([test_id_guid(毫秒)]),

       min([test_id_guid1(毫秒)])

FROM #result

UNION  ALL

SELECT '平均值',

       AVG([test(毫秒)]),

       AVG([test_id(毫秒)]),

       AVG([test_guid(毫秒)]),

       AVG([test_id_guid(毫秒)]),

       AVG([test_id_guid1(毫秒)])

FROM #result

UNION ALL

SELECT '最大值',

       max([test(毫秒)]),

       max([test_id(毫秒)]),

       max([test_guid(毫秒)]),

       max([test_id_guid(毫秒)]),

       max([test_id_guid1(毫秒)])

FROM #result

 

--DROP TABLE #result

 ------------------------------------------------------------------------------------------------

 

 SELECT COUNT(*)  FROM #result  WHERE [test_id(毫秒)]>[test_guid(毫秒)]

 SELECT COUNT(*)  FROM #result  WHERE [test_id(毫秒)]>[test_id_guid(毫秒)]

 SELECT COUNT(*)  FROM #result  WHERE [test_id(毫秒)]>[test_id_guid1(毫秒)]

 SELECT COUNT(*)  FROM #result  WHERE [test_id(毫秒)]>[test_guid(毫秒)]

 

 

 

 

 状态 test(毫秒) test_id(毫秒) test_guid(毫秒) test_id_guid(毫秒) test_id_guid1(毫秒)
正常 536 383 146 73 46
正常 576 230 56 113 83
正常 336 593 40 70 30
正常 276 543 66 46 26
正常 290 880 116 166 26
正常 776 540 76 26 50
正常 806 496 53 26 30
正常 626 220 36 130 26
正常 573 156 80 76 26
正常 636 220 63 46 26
正常 593 183 60 86 30
正常 606 350 46 63 26
正常 643 593 100 163 33
正常 803 590 106 93 43
正常 693 526 116 83 63
正常 813 316 46 53 30
正常 593 166 66 90 73
正常 620 246 80 80 26
正常 573 170 53 60 26
正常 583 183 53 60 30
正常 563 1246 256 130 176
正常 900 630 120 510 40
正常 610 126 100 43 43
正常 623 200 83 30 30
正常 586 210 100 46 36
正常 553 183 53 76 33
正常 593 246 56 76 36
正常 590 366 173 180 33
正常 1146 550 146 46 33
正常 286 543 70 76 30
正常 240 576 60 70 30
正常 286 840 163 183 50
正常 766 536 120 50 103
正常 386 693 50 30 33
正常 240 676 120 173 26
正常 360 1016 136 153 103
正常 233 426 63 30 486
正常 253 476 60 60 63
正常 396 583 150 53 93
正常 266 393 53 30 476
正常 563 153 53 63 30
正常 283 526 50 26 30
正常 646 373 146 173 43
正常 460 1386 610 100 153
正常 930 166 63 26 30
正常 603 213 60 96 36
正常 643 223 76 66 26
正常 683 210 53 46 33
正常 610 230 43 63 100
正常 713 580 176 30 33
最小值 233 126 36 26 26
平均值 559 443 98 86 64
最大值 1146 1386 610 510 486

 

 

 

--索引创建

CREATE   INDEX test1 ON test_id(id)

CREATE   INDEX test2 ON test_guid(guidid)

 

CREATE   INDEX test3 ON test_id_guid(id)

CREATE   INDEX test4 ON test_id_guid(guidid)

CREATE   INDEX test5 ON test_id_guid1(id)

CREATE   INDEX test6 ON test_id_guid1(guidid)

CREATE   INDEX test7 ON test_id_guid1(guidid1)

 

 


 

 

 

原文地址:https://www.cnblogs.com/qanholas/p/2170080.html