zoukankan      html  css  js  c++  java
  • SQL 数据插入、删除 大数据

    --测试表
    CREATE TABLE [dbo].[Employee] (
        [EmployeeNo] INT PRIMARY KEY,
        [EmployeeName] [nvarchar](50) NULL,
        [CreateUser] [nvarchar](50) NULL,
        [CreateDatetime] [datetime] NULL
    );
    --1、循环插入
    SET STATISTICS TIME ON;
    DECLARE @Index INT = 1;
    DECLARE @Timer DATETIME = GETDATE();
    
    WHILE @Index <= 100000
    BEGIN
        INSERT [dbo].[Employee](EmployeeNo, EmployeeName, CreateUser, CreateDatetime) VALUES(@Index, 'Employee_' + CAST(@Index AS CHAR(6)), 'system', GETDATE());
        SET @Index = @Index + 1;
    END
    
    SELECT DATEDIFF(MS, @Timer, GETDATE()) AS [执行时间(毫秒)];
    SET STATISTICS TIME OFF;
    --2、事务循环
    BEGIN TRAN;
    SET STATISTICS TIME ON;
    DECLARE @Index INT = 1;
    DECLARE @Timer DATETIME = GETDATE();
    
    WHILE @Index <= 100000
    BEGIN
        INSERT [dbo].[Employee](EmployeeNo, EmployeeName, CreateUser, CreateDatetime) VALUES(@Index, 'Employee_' + CAST(@Index AS CHAR(6)), 'system', GETDATE());
        SET @Index = @Index + 1;
    END
    
    SELECT DATEDIFF(MS, @Timer, GETDATE()) AS [执行时间(毫秒)];
    SET STATISTICS TIME OFF;
    COMMIT;
    --3、批量插入
    SET STATISTICS TIME ON;
    DECLARE @Timer DATETIME = GETDATE();
    
    INSERT [dbo].[Employee](EmployeeNo, EmployeeName, CreateUser, CreateDatetime)
    SELECT TOP(100000) EmployeeNo = ROW_NUMBER() OVER (ORDER BY C1.[OBJECT_ID]), 'Employee_', 'system', GETDATE()
    FROM SYS.COLUMNS AS C1 CROSS JOIN SYS.COLUMNS AS C2
    ORDER BY C1.[OBJECT_ID]
    
    SELECT DATEDIFF(MS, @Timer, GETDATE()) AS [执行时间(毫秒)];
    SET STATISTICS TIME OFF;
    --4、CET插入

    SET STATISTICS TIME ON;
    DECLARE @Timer DATETIME = GETDATE();
    
    ;WITH CTE(EmployeeNo, EmployeeName, CreateUser, CreateDatetime) AS(
        SELECT TOP(100000) EmployeeNo = ROW_NUMBER() OVER (ORDER BY C1.[OBJECT_ID]), 'Employee_', 'system', GETDATE()
        FROM SYS.COLUMNS AS C1 CROSS JOIN SYS.COLUMNS AS C2
        ORDER BY C1.[OBJECT_ID]
    )
    INSERT [dbo].[Employee] SELECT EmployeeNo, EmployeeName, CreateUser, CreateDatetime FROM CTE;
    
    SELECT DATEDIFF(MS, @Timer, GETDATE()) AS [执行时间(毫秒)];
    SET STATISTICS TIME OFF;
    --5、循环删除
    SET STATISTICS TIME ON;
    DECLARE @Timer DATETIME = GETDATE();
    
    DELETE FROM [dbo].[Employee];
    
    SELECT DATEDIFF(MS, @Timer, GETDATE()) AS [执行时间(毫秒)];
    SET STATISTICS TIME OFF;
    --6、批量删除
    SET STATISTICS TIME ON;
    DECLARE @Timer DATETIME = GETDATE();
    
    SET ROWCOUNT 100000;
    
    WHILE 1 = 1
    BEGIN
        BEGIN TRAN
        DELETE FROM [dbo].[Employee];
        COMMIT
        IF @@ROWCOUNT = 0
            BREAK;
    END
    
    SET ROWCOUNT 0;
    
    SELECT DATEDIFF(MS, @Timer, GETDATE()) AS [执行时间(毫秒)];
    SET STATISTICS TIME OFF;
    --6、Truncate删除
    SET STATISTICS TIME ON;
    DECLARE @Timer DATETIME = GETDATE();
    
    TRUNCATE TABLE [dbo].[Employee];
    
    SELECT DATEDIFF(MS, @Timer, GETDATE()) AS [执行时间(毫秒)];
    SET STATISTICS TIME OFF;
  • 相关阅读:
    BZOJ 1996: [Hnoi2010]chorus 合唱队
    BZOJ 2431: [HAOI2009]逆序对数列
    BZOJ1013: [JSOI2008]球形空间产生器sphere
    BZOJ 4196: [Noi2015]软件包管理器
    BZOJ 3670: [Noi2014]动物园
    NOIP 2017 提高组 day1t2 时间复杂度
    loj #6278. 数列分块入门 2
    CF285 E Positions in Permutations——“恰好->大于”的容斥和允许“随意放”的dp
    洛谷 1969 积木大赛——水题
    洛谷 1965 转圈游戏——水题
  • 原文地址:https://www.cnblogs.com/lenovo_tiger_love/p/3719989.html
Copyright © 2011-2022 走看看