首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加速插入TSQL过程

加速插入TSQL过程
EN

Stack Overflow用户
提问于 2014-07-01 02:42:13
回答 2查看 43关注 0票数 0

我需要一些技巧来调优一些TSQL以更快地执行,虽然它的工作时间太长了。这可能是因为我正在从另一个表中获取一个键,然后才能执行插入操作,有什么想法吗?

代码语言:javascript
复制
DECLARE db_cursorReads CURSOR FOR SELECT 
        [MeterId]
      ,[MeterRead]
        FROM MdsReadsImports;

declare @PremiseMeterId int;
declare @MeterId nvarchar(24);
declare @MeterRead int; 

OPEN db_cursorReads;
FETCH NEXT FROM db_cursorReads INTO 
      @MeterId
      ,@MeterRead;

WHILE @@FETCH_STATUS = 0  
BEGIN  

    set @PremiseMeterId = (select top 1 PremiseMeterId from PremiseMeters where MeterId = @MeterId)

    insert into PremiseMeterReads (MeterRead,PremiseMeterId)
    values (@MeterRead, @MPremiseMeterId)

    FETCH NEXT FROM db_cursorReads INTO 
     @MeterId
      ,@MeterRead;

END;
CLOSE db_cursorReads;
DEALLOCATE db_cursorReads;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-01 02:52:23

我看到您正在检索PremiseMeterId,但没有在您发布的脚本中使用它。也许您可以放弃游标,执行一个基于集合的查询:

代码语言:javascript
复制
INSERT INTO PremiseMeterReads (MeterRead,MeterId)
SELECT 
     [MeterRead]
    ,[MeterId]
FROM MdsReadsImports;
票数 1
EN

Stack Overflow用户

发布于 2014-07-01 02:49:16

首先,我注意到您正在设置但不使用@PremiseMeterID

第二,你似乎在这样做:

代码语言:javascript
复制
insert into PremiseMeterReads (MeterRead, MeterId)
    select MeterRead, MeterId
    from MdsReadsImports;

基于集合的操作应该比使用游标快得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24501764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档