SQL 数据插入、删除 大数据

女爷i 2022-03-15 02:36 287阅读 0赞

转自:https://www.cnblogs.com/lenovo_tiger_love/p/3719989.html

几种数据库的大数据批量插入: https://www.cnblogs.com/telwanggs/p/7485378.html

SQL 数据插入、删除 大数据

  1. --测试表
  2. CREATE TABLE [dbo].[Employee] (
  3. [EmployeeNo] INT PRIMARY KEY,
  4. [EmployeeName] [nvarchar](50) NULL,
  5. [CreateUser] [nvarchar](50) NULL,
  6. [CreateDatetime] [datetime] NULL
  7. );
  8. --1、循环插入
  9. SET STATISTICS TIME ON;
  10. DECLARE @Index INT = 1;
  11. DECLARE @Timer DATETIME = GETDATE();
  12. WHILE @Index <= 100000
  13. BEGIN
  14. INSERT [dbo].[Employee](EmployeeNo, EmployeeName, CreateUser, CreateDatetime) VALUES(@Index, 'Employee_' + CAST(@Index AS CHAR(6)), 'system', GETDATE());
  15. SET @Index = @Index + 1;
  16. END
  17. SELECT DATEDIFF(MS, @Timer, GETDATE()) AS [执行时间(毫秒)];
  18. SET STATISTICS TIME OFF;
  19. --2、事务循环
  20. BEGIN TRAN;
  21. SET STATISTICS TIME ON;
  22. DECLARE @Index INT = 1;
  23. DECLARE @Timer DATETIME = GETDATE();
  24. WHILE @Index <= 100000
  25. BEGIN
  26. INSERT [dbo].[Employee](EmployeeNo, EmployeeName, CreateUser, CreateDatetime) VALUES(@Index, 'Employee_' + CAST(@Index AS CHAR(6)), 'system', GETDATE());
  27. SET @Index = @Index + 1;
  28. END
  29. SELECT DATEDIFF(MS, @Timer, GETDATE()) AS [执行时间(毫秒)];
  30. SET STATISTICS TIME OFF;
  31. COMMIT;
  32. --3、批量插入
  33. SET STATISTICS TIME ON;
  34. DECLARE @Timer DATETIME = GETDATE();
  35. INSERT [dbo].[Employee](EmployeeNo, EmployeeName, CreateUser, CreateDatetime)
  36. SELECT TOP(100000) EmployeeNo = ROW_NUMBER() OVER (ORDER BY C1.[OBJECT_ID]), 'Employee_', 'system', GETDATE()
  37. FROM SYS.COLUMNS AS C1 CROSS JOIN SYS.COLUMNS AS C2
  38. ORDER BY C1.[OBJECT_ID]
  39. SELECT DATEDIFF(MS, @Timer, GETDATE()) AS [执行时间(毫秒)];
  40. SET STATISTICS TIME OFF;
  41. --4CET插入
  42. SET STATISTICS TIME ON;
  43. DECLARE @Timer DATETIME = GETDATE();
  44. ;WITH CTE(EmployeeNo, EmployeeName, CreateUser, CreateDatetime) AS(
  45. SELECT TOP(100000) EmployeeNo = ROW_NUMBER() OVER (ORDER BY C1.[OBJECT_ID]), 'Employee_', 'system', GETDATE()
  46. FROM SYS.COLUMNS AS C1 CROSS JOIN SYS.COLUMNS AS C2
  47. ORDER BY C1.[OBJECT_ID]
  48. )
  49. INSERT [dbo].[Employee] SELECT EmployeeNo, EmployeeName, CreateUser, CreateDatetime FROM CTE;
  50. SELECT DATEDIFF(MS, @Timer, GETDATE()) AS [执行时间(毫秒)];
  51. SET STATISTICS TIME OFF;
  52. --5、循环删除
  53. SET STATISTICS TIME ON;
  54. DECLARE @Timer DATETIME = GETDATE();
  55. DELETE FROM [dbo].[Employee];
  56. SELECT DATEDIFF(MS, @Timer, GETDATE()) AS [执行时间(毫秒)];
  57. SET STATISTICS TIME OFF;
  58. --6、批量删除
  59. SET STATISTICS TIME ON;
  60. DECLARE @Timer DATETIME = GETDATE();
  61. SET ROWCOUNT 100000;
  62. WHILE 1 = 1
  63. BEGIN
  64. BEGIN TRAN
  65. DELETE FROM [dbo].[Employee];
  66. COMMIT
  67. IF @@ROWCOUNT = 0
  68. BREAK;
  69. END
  70. SET ROWCOUNT 0;
  71. SELECT DATEDIFF(MS, @Timer, GETDATE()) AS [执行时间(毫秒)];
  72. SET STATISTICS TIME OFF;
  73. --6Truncate删除
  74. SET STATISTICS TIME ON;
  75. DECLARE @Timer DATETIME = GETDATE();
  76. TRUNCATE TABLE [dbo].[Employee];
  77. SELECT DATEDIFF(MS, @Timer, GETDATE()) AS [执行时间(毫秒)];
  78. SET STATISTICS TIME OFF;

发表评论

表情:
评论列表 (有 0 条评论,287人围观)

还没有评论,来说两句吧...

相关阅读

    相关 数据结构】最堆的插入删除

    堆是一种特殊的队列,从堆中取出元素的顺序不是按照元素进入队列的先后顺序,而是依据元素的优先权,或者说是大小,所以堆也叫做“优先队列”。 堆最常使用二叉树结构表示,可以看作是