SQLite3 ODBC驱动+ADODB简单查询极慢

问题描述 投票:0回答:2

我使用 Excel VBA 和从 http://www.ch-werner.de/sqliteodbc/ 获得的 SQLite3 ODBC 驱动程序 两者都是 Windows 10 计算机上的 32 位版本。

对具有 16 列和 200 行的单个表进行简单的

Select
查询每行大约需要 200 毫秒(我对其进行了计时)。

对于执行的查询来说,这超过了 30 秒 <30ms in SQLite3.

我尝试了几种cursorType,LockType,CursorLocation,但没有成功

我尝试了 Excel 2010 和 Excel 365。

Sub TestSqlite()
  Dim cnn As ADODB.Connection
  Dim rs As ADODB.Recordset
  Set cnn = New ADODB.Connection
  Set rs = New ADODB.Recordset
  cnn.Open "DRIVER=SQLite3 ODBC Driver;Database=C:\Test.sqlite;"
  
  rs.CursorLocation = adUseClient
  rs.CursorType = adOpenStatic
  rs.LockType = adLockReadOnly
  
  rs.Open "SELECT * from SimpleTable limit 20;", cnn
  
  rs.Close
  Set rs = Nothing
  cnn.Close
  Set cnn = Nothing

End Sub

有什么办法可以解决这个问题吗?

excel vba performance sqlite adodb
2个回答
1
投票

这个愚蠢的(请原谅我的法语)Microsoft 反恶意软件扫描接口 (AMSI) 功能存在一个“已知”问题,这对我来说听起来完全是胡说八道,并且严重降低了 VBA7 DLL 调用的性能(我尝试了一些建议)互联网解决方法,但对我来说没有任何作用)。虽然在使用 ADO 时,您不直接调用 DLL,但最终它会调用 SQLiteODBC 驱动程序,而 AMSI 是最有可能的罪魁祸首(连同所有 Windows 内置并默认激活的安全功能)。去年,我自己进行了一些“测试”,尽管环境略有不同。尽管我禁用了大部分安全功能,但结果还是相当惊人。 您尝试过进行交易吗? (这很愚蠢,但是...)


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.