【发布时间】:2010-09-29 21:06:10
【问题描述】:
我一次向表中插入大约 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()
大约需要 10 毫秒。作为比较,在同一台机器上,MySQL 中的相同查询大约需要 20ms。
- SELECT Getdata() 是一种可靠的事务计时方法吗?
- 为什么 MS SQL Server Management Studio 这么快?
- 我可以做些什么来提高性能? ODBC的任何替代品?直接连接到 SQL 服务器?
【问题讨论】:
-
SSMS 查询看起来那么快的原因是因为我多次发送完全相同的查询。只需在原查询中更改一个字母,再次运行'SQL Server parse and compile',执行速度下降到非常接近ODBC的速度。