SQL并行与否的性能差异比较两种代码,核心代码相同,其中一个使用变量保存查询出的结果,另一个直接输出。使用同一变量时,强迫SQL放弃了并行,使用了循环。
测试结果
表'#1699586C'。扫描计数1,逻辑读取186 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。
SQL Server 执行时间:
CPU 时间= 0 毫秒,占用时间= 335 毫秒。
SQL Server 执行时间:
CPU 时间= 33954 毫秒,占用时间= 35315毫秒。
表'#1699586C'。扫描计数1,逻辑读取186 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。
SQL Server 执行时间:
CPU 时间= 93 毫秒,占用时间= 167毫秒
SELECT @bin = @bin + CASE @withDeviceID WHEN 0 THEN 0x ELSECAST (deviceid ASBINARY(16)) END + dbo.updatesum(dbo.long2Bin_4byte(CardSerialNo) + dbo.long2Bin_4byte(Tac) + dbo.long2Bin(CardSeq) + dbo.int2Bin(HardwareNo) + CAST (CardType ASBINARY(1)) + CAST (TranscationType ASBINARY(1)) + CAST (Station ASBINARY(1)) + dbo.int2Bin_3byte(PReBalance) + dbo.int2Bin_3byte(Amount) + dbo.time2utcbin(TranscationTime) + CAST (DeviceType ASBINARY(1)) + dbo.int2Bin(TotalIntegral) + dbo.short2bin(Integral) + dbo.int2Bin(AccountCount) + CAST (Account ASBINARY(1)) + dbo.int2Bin(Balance) + dbo.int2bin_3byte(Price) + CAST (Period ASBINARY(1)) + dbo.int2Bin(Device) + CAST (InOutFlag ASBINARY(1)) + CAST (UpDownFlag ASBINARY(1)) + dbo.short2bin(Operator) + CAST (CardStandard ASBINARY(1)) + CAST (TranscationMode ASBINARY(1)) + CAST (0 ASBINARY(1)) + CAST(0 ASBINARY(7)) + 0x55, 0, 62, 63) FROM @record
SELECTCASE 1 WHEN 0 THEN 0x ELSECAST (deviceid ASBINARY(16)) END + dbo.updatesum(dbo.long2Bin_4byte(CardSerialNo) + dbo.long2Bin_4byte(Tac) + dbo.long2Bin(CardSeq) + dbo.int2Bin(HardwareNo) + CAST (CardType ASBINARY(1)) + CAST (TranscationType ASBINARY(1)) + CAST (Station ASBINARY(1)) + dbo.int2Bin_3byte(PreBalance) + dbo.int2Bin_3byte(Amount) + dbo.time2utcbin(TranscationTime) + CAST (DeviceType ASBINARY(1)) + dbo.int2Bin(TotalIntegral) + dbo.short2bin(Integral) + dbo.int2Bin(AccountCount) + CAST (Account ASBINARY(1)) + dbo.int2Bin(Balance) + dbo.int2bin_3byte(Price) + CAST (Period ASBINARY(1)) + dbo.int2Bin(Device) + CAST (InOutFlag ASBINARY(1)) + CAST (UpDownFlag ASBINARY(1)) + dbo.short2bin(Operator) + CAST (CardStandard ASBINARY(1)) + CAST (TranscationMode ASBINARY(1)) + CAST (0 ASBINARY(1)) + CAST(0 ASBINARY(7)) + 0x55, 0, 62, 63)FROM @record