许多新手不太清楚如何测试如何将Sqlserver数据写入表中。为了帮助大家解决这个问题,下面小编就详细讲解一下。需要的人可以从中学习,希望你能有所收获。
1.创建表格:
开始交易
将带引号的标识符设置为开
开启算术端口
将数值_舍入中止设置为关闭
设置串联空产量空开
将ANSI_NULLS设置为开
将ANSI_PADDING设置为开
设置ANSI _警告开启
犯罪
开始交易
去
创建表dbo。表3
(
不为空,
公司id nvarchar(MAX)空,
数值最大值为空,
代码nvarchar(MAX)空,
input_tele bigint NULL,
类型nvarchar(最大值)空
)开[主要]
文本图像开启[主要]
去
ALTER TABLE dbo。表3设置(锁定升级=表)
去
犯罪
2.测试表插入
在表中插入200000条记录:
设置nocount on
声明@i int
设置@i=0
而@i 200000
开始
插入Table_3值(@i、‘ABCD’、‘123’、‘234’、‘345’、‘567’)
设置@i=@i 1
目标
去
用了3分11秒。
显示重叠('表3 ')
去
DBCC正在扫描'表3 '表.
表: ' : ' Table _ 3 '(370100359););索引ID: 0,数据库ID: 5
已执行表级扫描。
-....扫描页数: 1482
-扫描区域的数量.... 188
-地区转换数量.... 187
-每个地区的平均页数... 7.9
-扫描密度[最佳计数:实际计数]. 98.94% [186:188]
-区域扫描碎片... 1.60%
-每页平均可用字节数... 403.7
-平均页面密度(全)... 95.01%
DBCC执行完毕。如果DBCC输出错误信息,请联系系统管理员。
未索引的表大小:
索引表大小:
显示重叠('表3 ')
去
DBCC正在扫描'表3 '表.
表: ' : ' Table _ 3 '(386100416););索引ID: 1,数据库ID: 5
已执行表级扫描。
-....扫描页数: 1087
-扫描区域的数量.... 136
-移交次数.... 135
-每个区域的平均页数... 8.0
-扫描密度[最佳计数:实际计数]. 100.00% [1363360136]
-逻辑扫描片段... 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的数据量:
建好表,插入数据,再加索引。
建好表,建好索引,再插入数据。
感觉时间花费上差不多,空间消耗上也差不多。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/124810.html