• 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;
  • 相关阅读:
    cassandra安装
    002 spring boot框架,引入mybatis-generator插件,自动生成Mapper和Entity
    033 SSM综合练习09--数据后台管理系统--基于AOP的日志处理
    032 SSM综合练习08--数据后台管理系统--jsp页面显示当前用户名
    031 SSM综合练习07--数据后台管理系统--用户详情查询
    030 SSM综合练习06--数据后台管理系统--SSM权限操作及Spring Security入门
    029 SSM综合练习05--数据后台管理系统--订单分页查询
    027 SSM综合练习03--数据后台管理系统--product-list.jsp和main.jsp页面制作
    Idea 目录结构下有红色波浪线
    virtualbox上,android x86 的分辨率的设置
  • 原文地址:https://www.cnblogs.com/lenovo_tiger_love/p/3719989.html
Copyright © 2020-2023  润新知