一次简单的sql性能比较
生活随笔
收集整理的這篇文章主要介紹了
一次简单的sql性能比较
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用普通的 while循環插入數據
執行5分鐘(未執行完,并且已經報內存溢出的錯誤。)
declare @feesCount bigint; declare @feesid bigint set @feesCount=1 set @feesid=100201000000002422while(@feesCount<=100000) begin INSERT INTO [dbo].[TF_Fees]([FeesID],[CommID],[CustID],[RoomID],[CostID],[CorpStanID],[StanID],[HandID],[ParkID],[CarparkID],[MeterSign],[AccountsDueDate],[FeesDueDate],[FeesStateDate],[FeesEndDate],[DueAmount],[DebtsAmount],[WaivAmount],[PrecAmount],[PaidAmount],[RefundAmount],[ContID],[LeaseContID],[OwnerFeesID],[IsAudit],[IsBank],[IsCharge],[IsFreeze],[IsProperty],[IsPrec],[CalcAmount],[CalcAmount2],[IncidentID],[StanMemo],[CommisionCostID],[CommisionAmount],[WaivCommisAmount],[PerStanAmount],[AccountFlag],[FeesMemo],[MeterID],[PMeterID],[CsmTaskID])select @feesid+@feesCount as [FeesID],600 as [CommID],[CustID],[RoomID],[CostID],[CorpStanID],[StanID],[HandID],[ParkID],[CarparkID],[MeterSign],[AccountsDueDate],[FeesDueDate],[FeesStateDate],[FeesEndDate],[DueAmount],[DebtsAmount],[WaivAmount],[PrecAmount],[PaidAmount],[RefundAmount],[ContID],[LeaseContID],[OwnerFeesID],[IsAudit],[IsBank],[IsCharge],[IsFreeze],[IsProperty],[IsPrec],[CalcAmount],[CalcAmount2],[IncidentID],[StanMemo],[CommisionCostID],[CommisionAmount],[WaivCommisAmount],[PerStanAmount],[AccountFlag],[FeesMemo],[MeterID],[PMeterID],[CsmTaskID]from TF_Feeswhere FeesID=@feesidset @feesCount=@feesCount+1; end?
改用CTE后
declare @feesCount bigint; declare @feesid bigint set @feesCount=1 select @feesid=MAX(feesid) from TF_FeesCreate TABLE #temp ([FeesID] [bigint] NOT NULL,[CommID] [int] NULL,[CustID] [bigint] NULL,[RoomID] [bigint] NULL,[CostID] [bigint] NULL,[CorpStanID] [bigint] NULL,[StanID] [bigint] NULL,[HandID] [bigint] NULL,[ParkID] [bigint] NULL,[CarparkID] [bigint] NULL,[MeterSign] [nvarchar](10) NULL,[AccountsDueDate] [datetime] NULL,[FeesDueDate] [datetime] NULL,[FeesStateDate] [datetime] NULL,[FeesEndDate] [datetime] NULL,[DueAmount] [numeric](18, 2) NULL,[DebtsAmount] [numeric](18, 2) NULL,[WaivAmount] [numeric](18, 2) NULL,[PrecAmount] [numeric](18, 2) NULL,[PaidAmount] [numeric](18, 2) NULL,[RefundAmount] [numeric](18, 2) NULL,[ContID] [bigint] NULL,[LeaseContID] [bigint] NULL,[OwnerFeesID] [bigint] NULL,[IsAudit] [smallint] NULL,[IsBank] [smallint] NULL,[IsCharge] [smallint] NULL,[IsFreeze] [smallint] NULL,[IsProperty] [smallint] NULL,[IsPrec] [smallint] NULL,[CalcAmount] [numeric](18, 2) NULL,[CalcAmount2] [numeric](18, 2) NULL,[IncidentID] [bigint] NULL,[StanMemo] [nvarchar](200) NULL,[CommisionCostID] [bigint] NULL,[CommisionAmount] [numeric](18, 2) NULL,[WaivCommisAmount] [numeric](18, 2) NULL,[PerStanAmount] [numeric](18, 2) NULL,[AccountFlag] [int] NULL,[FeesMemo] [nvarchar](255) NULL,[MeterID] [bigint] NULL,[PMeterID] [bigint] NULL,[CsmTaskID] [uniqueidentifier] NULL)print @feesCount while(@feesCount<=100000) begin INSERT INTO #temp([FeesID],[CommID],[CustID],[RoomID],[CostID],[CorpStanID],[StanID],[HandID],[ParkID],[CarparkID],[MeterSign],[AccountsDueDate],[FeesDueDate],[FeesStateDate],[FeesEndDate],[DueAmount],[DebtsAmount],[WaivAmount],[PrecAmount],[PaidAmount],[RefundAmount],[ContID],[LeaseContID],[OwnerFeesID],[IsAudit],[IsBank],[IsCharge],[IsFreeze],[IsProperty],[IsPrec],[CalcAmount],[CalcAmount2],[IncidentID],[StanMemo],[CommisionCostID],[CommisionAmount],[WaivCommisAmount],[PerStanAmount],[AccountFlag],[FeesMemo],[MeterID],[PMeterID],[CsmTaskID])select @feesid+@feesCount as [FeesID],600 as [CommID],[CustID],[RoomID],[CostID],[CorpStanID],[StanID],[HandID],[ParkID],[CarparkID],[MeterSign],[AccountsDueDate],[FeesDueDate],[FeesStateDate],[FeesEndDate],[DueAmount],[DebtsAmount],[WaivAmount],[PrecAmount],[PaidAmount],[RefundAmount],[ContID],[LeaseContID],[OwnerFeesID],[IsAudit],[IsBank],[IsCharge],[IsFreeze],[IsProperty],[IsPrec],[CalcAmount],[CalcAmount2],[IncidentID],[StanMemo],[CommisionCostID],[CommisionAmount],[WaivCommisAmount],[PerStanAmount],[AccountFlag],[FeesMemo],[MeterID],[PMeterID],[CsmTaskID]from TF_Feeswhere FeesID=@feesidset @feesCount=@feesCount+1; endselect * from #temp;disable trigger [TRG_TF_Fees_GetMaxFeesID] on TF_Fees insert into TF_Fees select * from #temp ; enable trigger [TRG_TF_Fees_GetMaxFeesID] on TF_Fees drop table #temp執行只用13秒。。。。。
轉載于:https://www.cnblogs.com/shikyoh/archive/2013/01/28/2879874.html
總結
以上是生活随笔為你收集整理的一次简单的sql性能比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电子税务局报税操作流程,以下有七步
- 下一篇: 跳空低开低走意味什么