我一次在表中插入大约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 回答
第一次连接通常需要一段时间才能完成设置 . 这可以解释初始延迟:在SSMS中,当您启动查询时,连接已经就位 . 尝试从同一个C程序中插入两次,看看是否有所不同 .
另外:你使用什么ODBC驱动程序?对于ODBC,请考虑本机驱动程序:
您也可以通过COM使用ADO,而不是ODBC . 使用生成的包装器很容易做到 . 然后你可以使用OLE DB连接:
您进行基准测试的方式,您没有捕获编译时间 . 做这个: