导入数据量:10W。
环境:Sql server 2008 R2
导入用时 29分钟。
每条执行语句:IF EXISTS(SELECT 1 FROM [CustomerSchedule_Temp] WHERE [ContractNO] = 'F8N37643' AND [BaseData] = '2013-01-21' AND [CompID] = 'KH0001')
BEGIN
DELETE FROM [CustomerSchedule_Temp] WHERE [ContractNO] = 'F8N37643' AND [BaseData] = '2013-01-21' AND [CompID] = 'KH0001'
END
INSERT INTO [CustomerSchedule_Temp]([OTISWeeks], [Re1], [Re2], [Dstation], [OrderNumber], [ShippMethod], [ContractNO], [ContractType], [BaseData], [IsWorry], [PlanType], [PlaceOfDelivery], [ReceiveData], [UnderCust], [DeliveryDate], [Batch], [Area], [OWeight], [Ladder], [LadderRe], [CompID], [RequestFinishDate], [LeaveFacDate], [ReciveDate], [PartsBuyDate], [DrawDownData], [AssemFinishDate], [InventoryFinishDate], [ProcDownData], [WholeBankDate], [SelfFinishDate], [CancelCause], [CompNumber], [ContactVersionsNo], [contract_stat], [DrawFinishData], [HzFSendData], [ID], [IN_Time], [Inbatches], [Input_ImportInfo], [KeyPartyDesc], [ModifyData], [ModifyPrsn], [PickUpType], [RequestData], [UpInventoryDate], [PType], [SendData], [Attachment], [CompType], [PcData], [FirstDeliDate], [BoxNum], [Series], [TrsptModeID]) VALUES(NULL, NULL, NULL, NULL, NULL, NULL, 'F8N37643', '客梯', '2013-01-21', NULL, '410-1', NULL, ISNULL('2013-01-11', CONVERT(VARCHAR(10),GETDATE(),120)), '泉州市XXXX机械有限公司', '2013-01-21', '1', '福州', '1', 'GeN2-MR', 'CMD', 'KH0001', '2013-01-21', '2013-01-21', NULL, '2013-01-16', '2013-01-14', NULL, '2013-01-15', '2013-01-14', '2013-01-17', '2013-01-16', NULL, NULL, NULL, ISNULL(NULL, ('正常')), NULL, NULL, '0000000000000076', ISNULL(NULL, (CONVERT([varchar](20),getdate(),(120)))), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 76, NULL)客户一定需要DEL后重复的再插入,不能用UPDATE。在这种情况下,这个速度还有提升的空间吗,这个速度合理吗?用参数导入得多花10分钟。
环境:Sql server 2008 R2
导入用时 29分钟。
每条执行语句:IF EXISTS(SELECT 1 FROM [CustomerSchedule_Temp] WHERE [ContractNO] = 'F8N37643' AND [BaseData] = '2013-01-21' AND [CompID] = 'KH0001')
BEGIN
DELETE FROM [CustomerSchedule_Temp] WHERE [ContractNO] = 'F8N37643' AND [BaseData] = '2013-01-21' AND [CompID] = 'KH0001'
END
INSERT INTO [CustomerSchedule_Temp]([OTISWeeks], [Re1], [Re2], [Dstation], [OrderNumber], [ShippMethod], [ContractNO], [ContractType], [BaseData], [IsWorry], [PlanType], [PlaceOfDelivery], [ReceiveData], [UnderCust], [DeliveryDate], [Batch], [Area], [OWeight], [Ladder], [LadderRe], [CompID], [RequestFinishDate], [LeaveFacDate], [ReciveDate], [PartsBuyDate], [DrawDownData], [AssemFinishDate], [InventoryFinishDate], [ProcDownData], [WholeBankDate], [SelfFinishDate], [CancelCause], [CompNumber], [ContactVersionsNo], [contract_stat], [DrawFinishData], [HzFSendData], [ID], [IN_Time], [Inbatches], [Input_ImportInfo], [KeyPartyDesc], [ModifyData], [ModifyPrsn], [PickUpType], [RequestData], [UpInventoryDate], [PType], [SendData], [Attachment], [CompType], [PcData], [FirstDeliDate], [BoxNum], [Series], [TrsptModeID]) VALUES(NULL, NULL, NULL, NULL, NULL, NULL, 'F8N37643', '客梯', '2013-01-21', NULL, '410-1', NULL, ISNULL('2013-01-11', CONVERT(VARCHAR(10),GETDATE(),120)), '泉州市XXXX机械有限公司', '2013-01-21', '1', '福州', '1', 'GeN2-MR', 'CMD', 'KH0001', '2013-01-21', '2013-01-21', NULL, '2013-01-16', '2013-01-14', NULL, '2013-01-15', '2013-01-14', '2013-01-17', '2013-01-16', NULL, NULL, NULL, ISNULL(NULL, ('正常')), NULL, NULL, '0000000000000076', ISNULL(NULL, (CONVERT([varchar](20),getdate(),(120)))), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 76, NULL)客户一定需要DEL后重复的再插入,不能用UPDATE。在这种情况下,这个速度还有提升的空间吗,这个速度合理吗?用参数导入得多花10分钟。
解决方案 »
- 如何查询临时表inserted和deleted
- 取数据下面哪句sql语句效率高(100分)
- 求一个简单的问题.
- 有没有这样的语句select * except 字段1 from table1?????????
- 关于标识增量(标识规范)问题,ACCESS导入后怎么用SQL语言来做??
- 高手们 这样的sql语句怎么写?急急.....
- 怎样可以在两个SQL SERVER之间复制数据库?
- MSSQL的表能否加密?
- 請問將execl資料表導入sql 2000時,為什麼有些值怎麼沒入導入過去呢?
- 用sql语句做查询统计问题,急!!
- 批量删除sql注入
- SQL SERVER 2008 R2 当查询条件为乱码时,字段为空字符
GO
-->生成表tbif object_id('tb') is not null
drop table tb
Go
Create table tb([Type] nvarchar(1))
Insert into tb
Select N'A'
Union all Select N'B'
INSERT INTO TB
SELECT * FROM OPENROWSET('MICROSOFT.ACE.OLEDB.12.0','EXCEL 12.0;HDR=YES;IMEX=2;DATABASE=H:\test.xls',[Sheet1$]) AS t
WHERE NOT EXISTS(SELECT 1 FROM tb AS x
WHERE x.Type=t.TYPE
)
/*
(4 個資料列受到影響)
*/ SELECT * FROM tb
/*
Type
----
A
B
C
D
E
F*/
先全部导入临时表,再连接删除,插入新数据即可
同意大版这种做法,先全部搞到临时表中,然后在SQL中进行其它的操作.