需求是这样的.
每分钟,都会执行100个select的sql,每个sql都会计算出一个一些数据.
然后这些数据会被分别insert到100个表中
不知道怎么做效率最高啊?我现在能想到的方法就是1.把100个select,insert封成一个sp.
2.开一个长连接,然后启动thread pool开10个thread执行这100个select ,insert

解决方案 »

  1.   

    就你描述的情况看还是用存储过程吧,用多线程也没什么效果,也就100个SQL语句而已,
      

  2.   

        感觉你这样的要求完全可以在数据库中独立的运行,不需要借助程序来操作,如果你使用server2000的话你可以用一个定时作业来实现,其他的数据库我就不知道了!下面是在server2000中定时任务的具体操作!    企业管理器 
    --管理 
    --SQL Server代理 
    --右键作业 
    --新建作业 
    --"常规"项中输入作业名称 
    --"步骤"项 
    --新建 
    --"步骤名"中输入步骤名 
    --"类型"中选择"Transact-SQL 脚本(TSQL)" 
    --"数据库"选择执行命令的数据库 
    --"命令"中输入要执行的语句: 
                           EXEC 存储过程名 ... --该存储过程用于创建表 --确定 
    --"调度"项 
    --新建调度 
    --"名称"中输入调度名称 
    --"调度类型"中选择你的作业执行安排 
    --如果选择"反复出现" 
    --点"更改"来设置你的时间安排  
    然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法: 
    我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定. 
      

  3.   

    1.把100个select,insert封成一个sp. 
    我也想过用存储过程
    但是存储过程也是顺序的所以不知道用存储过程快
    还是2快啊
      

  4.   


    Select出来的结果量大吗?
    如果量不大,用多线程可能有助于提高性能。关键不太了解你的业务,如果有可能,
    可不可以用一个Select计算得到所有结果后,再insert到100个表?
      

  5.   

    用存储过程,封装一下就可以了找找100条select的规律,写一个存储过程得了
      

  6.   

    ORACLE在执行sql时是可以形成记录区的。说白了就是对某个SQL的缓存,一旦形成,性能是相当的提高。
      

  7.   

    感觉你这样的要求完全可以在数据库中独立的运行,不需要借助程序来操作,如果你使用server2000的话你可以用一个定时作业来实现,其他的数据库我就不知道了!下面是在server2000中定时任务的具体操作!     
    SQL code企业管理器 
    --管理 
    --SQL Server代理 
    --右键作业 
    --新建作业 
    --"常规"项中输入作业名称 
    --"步骤"项 
    --新建 
    --"步骤名"中输入步骤名 
    --"类型"中选择"Transact-SQL 脚本(TSQL)" 
    --"数据库"选择执行命令的数据库 
    --"命令"中输入要执行的语句: 
                           EXEC 存储过程名 ... --该存储过程用于创建表 --确定 
    --"调度"项 
    --新建调度 
    --"名称"中输入调度名称 
    --"调度类型"中选择你的作业执行安排 
    --如果选择"反复出现" 
    --点"更改"来设置你的时间安排  
    然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法: 
    我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定. 
      

  8.   

    你用的是哪个database? 使用存储过程...