共计 4520 个字符,预计需要花费 12 分钟才能阅读完成。
如何进行 Sqlserver 数据写入表的测试,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
1、创建表:
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Table_3
(
id int NOT NULL,
company_id nvarchar(MAX) NULL,
number nvarchar(MAX) NULL,
code nvarchar(MAX) NULL,
input_tele bigint NULL,
type nvarchar(MAX) NULL
) ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE dbo.Table_3 SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
2、测试表插入
对表插入 200000 条记录:
set nocount on
declare @i int
set @i = 0
while @i 200000
begin
insert into Table_3 values (@i, abcd , 123 , 234 , 345 , 567)
set @i = @i +1
end
go
耗时 3 分 11 秒。
dbcc showcontig(Table_3)
go
DBCC SHOWCONTIG 正在扫描 Table_3 表 …
表: Table_3 (370100359);索引 ID: 0,数据库 ID: 5
已执行 TABLE 级别的扫描。
– 扫描页数 …………………………..: 1482
– 扫描区数 …………………………: 188
– 区切换次数 …………………………: 187
– 每个区的平均页数 ……………………: 7.9
– 扫描密度 [最佳计数: 实际计数]…….: 98.94% [186:188]
– 区扫描碎片 ………………: 1.60%
– 每页的平均可用字节数 …………………: 403.7
– 平均页密度(满)…………………: 95.01%
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
未加索引表大小:
加索引后表大小:
dbcc showcontig(Table_3)
go
DBCC SHOWCONTIG 正在扫描 Table_3 表 …
表: Table_3 (386100416);索引 ID: 1,数据库 ID: 5
已执行 TABLE 级别的扫描。
– 扫描页数 …………………………..: 1087
– 扫描区数 …………………………: 136
– 区切换次数 …………………………: 135
– 每个区的平均页数 ……………………: 8.0
– 扫描密度 [最佳计数: 实际计数]…….: 100.00% [136:136]
– 逻辑扫描碎片 ………………: 0.00%
– 区扫描碎片 ………………: 3.68%
– 每页的平均可用字节数 …………………: 0.3
– 平均页密度(满)…………………: 100.00%
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
清空表数据。
修改表结构:
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_Table_3
(
id int NOT NULL,
company_id varchar(50) NULL,
number varchar(50) NULL,
code varchar(50) NULL,
input_tele bigint NULL,
type varchar(50) NULL
) ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_Table_3 SET (LOCK_ESCALATION = TABLE)
GO
IF EXISTS(SELECT * FROM dbo.Table_3)
EXEC(INSERT INTO dbo.Tmp_Table_3 (id, company_id, number, code, input_tele, type)
SELECT id, CONVERT(varchar(50), company_id), CONVERT(varchar(50), number), CONVERT(varchar(50), code), input_tele, CONVERT(varchar(50), type) FROM dbo.Table_3 WITH (HOLDLOCK TABLOCKX) )
GO
DROP TABLE dbo.Table_3
GO
EXECUTE sp_rename N dbo.Tmp_Table_3 , N Table_3 , OBJECT
GO
COMMIT
对表插入 200000 条记录:
set nocount on
declare @i int
set @i = 0
while @i 200000
begin
insert into Table_3 values (@i, abcd , 123 , 234 , 345 , 567)
set @i = @i +1
end
go
耗时 3 分 07 秒。
dbcc showcontig(Table_3)
go
DBCC SHOWCONTIG 正在扫描 Table_3 表 …
表: Table_3 (386100416);索引 ID: 0,数据库 ID: 5
已执行 TABLE 级别的扫描。
– 扫描页数 …………………………..: 1143
– 扫描区数 …………………………: 145
– 区切换次数 …………………………: 144
– 每个区的平均页数 ……………………: 7.9
– 扫描密度 [最佳计数: 实际计数]…….: 98.62% [143:145]
– 区扫描碎片 ………………: 2.07%
– 每页的平均可用字节数 …………………: 397.0
– 平均页密度(满)…………………: 95.10%
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
truncate table Table_3 后:
dbcc showcontig(Table_3)
go
DBCC SHOWCONTIG 正在扫描 Table_3 表 …
表: Table_3 (386100416);索引 ID: 0,数据库 ID: 5
已执行 TABLE 级别的扫描。
– 扫描页数 …………………………..: 0
– 扫描区数 …………………………: 0
– 区切换次数 …………………………: 0
– 每个区的平均页数 ……………………: 0.0
– 扫描密度 [最佳计数: 实际计数]…….: 100.00% [0:0]
– 区扫描碎片 ………………: 0.00%
– 每页的平均可用字节数 …………………: 0.0
– 平均页密度(满)…………………: 0.00%
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
对表加索引:
对 id 字段加主键聚集索引:
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
ALTER TABLE dbo.Table_3 ADD CONSTRAINT
PK_Table_3 PRIMARY KEY CLUSTERED
(
id
) WITH(STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
ALTER TABLE dbo.Table_3 SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
对表插入 200000 条记录:
set nocount on
declare @i int
set @i = 0
while @i 200000
begin
insert into Table_3 values (@i, abcd , 123 , 234 , 345 , 567)
set @i = @i +1
end
go
dbcc showcontig(Table_3)
go
DBCC SHOWCONTIG 正在扫描 Table_3 表 …
表: Table_3 (386100416);索引 ID: 1,数据库 ID: 5
已执行 TABLE 级别的扫描。
– 扫描页数 …………………………..: 1087
– 扫描区数 …………………………: 139
– 区切换次数 …………………………: 138
– 每个区的平均页数 ……………………: 7.8
– 扫描密度 [最佳计数: 实际计数]…….: 97.84% [136:139]
– 逻辑扫描碎片 ………………: 0.55%
– 区扫描碎片 ………………: 2.16%
– 每页的平均可用字节数 …………………: 0.3
– 平均页密度(满)…………………: 100.00%
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
先加索引后插入数据后表大小:
对于 20W 的数据量:
建好表,插入数据,再加索引。
建好表,建好索引,再插入数据。
感觉时间花费上差不多,空间消耗上也差不多。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。