首页 文章

如何加快SQL服务器的多行插入?

提问于
浏览
2

我一次在表中插入大约400行(SQL Server 2008) . 我已经尝试了UNION ALL,但这大大减慢了速度 . 我决定使用以下查询:

INSERT INTO table VALUES (a, b,...),(c, d,...),...(x,y,...);

当我通过ODBC进行此查询时,大约需要400毫秒(我使用C和时间单次调用sqlExecDirect转到odbc32.dll) . 但是,当我在Getdate()包装的MS SQL Server Management Studio中运行查询时:

SELECT Getdate()
INSERT INTO ...
SELECT Getdate()

它需要~10ms . 为了比较,在同一台机器上,MySQL中的相同查询大约需要20ms .

  • SELECT Getdata()是一种可靠的交易时间方式吗?

  • 为什么MS SQL Server Management Studio这么快?

  • 如何提高性能? ODBC的替代方案?直接连接到SQL服务器?

2 回答

  • 0

    第一次连接通常需要一段时间才能完成设置 . 这可以解释初始延迟:在SSMS中,当您启动查询时,连接已经就位 . 尝试从同一个C程序中插入两次,看看是否有所不同 .

    另外:你使用什么ODBC驱动程序?对于ODBC,请考虑本机驱动程序:

    Driver={SQL Server Native Client 10.0};Server=myServerAddress;
        Database=myDataBase;Uid=myUsername;Pwd=myPassword;
    

    您也可以通过COM使用ADO,而不是ODBC . 使用生成的包装器很容易做到 . 然后你可以使用OLE DB连接:

    Provider=SQLNCLI10;Server=myServerAddress;
        Database=myDataBase;Uid=myUsername; Pwd=myPassword;
    
  • 0

    您进行基准测试的方式,您没有捕获编译时间 . 做这个:

    SET STATISTICS TIME ON
    GO
    INSERT INTO ...
    

相关问题