delphi下用什么控件访问SQLITE的速度最快?
最近因工作需要采用SQLITE作为数据库,但是实测发现性能并不理想。
测试方法:3种数据库SQLSERVER、ACCESS、SQLITE,分别都有一个CUSTOMERS的数据表,里面各自都有同样数量的数据(1.8W)
连接方式:
1、SQLSERVER:adoconnection+adoquery+datasetprovider+clientdataset
2、SQLITE:ASQLite3DB+ASQLite3Query+datasetprovider+clientdataset
3、ACCESS:adoconnection+adoquery+datasetprovider+clientdataset
打开方式:clientdataset.open
测试结果:
SQLSERVER:9.9秒
SQLITE:10秒
ACCESS:9.9秒
对ADO的连接方式进行优化:将ADOQUERY的属性设置一下:CursorLocation->clUseServer,CursorType->ctOpenForwardOnly,LockType->ltReadOnly
再次测试的结果如下:
测试结果:
SQLSERVER:3.8秒
SQLITE:10秒
ACCESS:3.6秒
第一次测试结果,SQLITE没有占到上风,第二次测试结果,SQLITE则完全处于下风
同样的数据量,在.net平台下对SQLSERVER、SQLITE、Access进行测试
三种连接方式:oledb连SQLSERVER,sqlclient连SQLSERVER,SQLiteConnection连SQLITE,oledb连access
测试结果按速度快慢分别是:sqlclient>SQLiteConnection>oledb(SQLSERVER)>OLEDB(access)
速度分别是:0.65秒,1秒,1.18秒,1.8秒
在.net平台下,SQLITE可以做到比OLEDB的连接方式的速度要快,所以我觉得在delphi下SQLITE也应该比ADO连SQL的速度要快才对的。
但是所有属性都试过,并没有改善性能的方法。不知道各位有没有好的优化方案?
[解决办法]
没用过sqlite期待解决方案
[解决办法]
顶一下!关注
[解决办法]
顶一下 !关注
[解决办法]
没用过,帮顶
[解决办法]
你用什么语句来测试?
[解决办法]
不好意思,看到了,"clientdataset.open "
你只是看开打的速度,其它操作是不是也一样呢?
还是你只是用作数据显示.
[解决办法]
是不是通过ado的sqlite并不占优势,或者你的表建立的索引有关系?
仅供参考,另外:觉得用accese和sql server来作对比不太合适
[解决办法]
注,有太了解sqlite