找回密码
 加入
搜索
查看: 2581|回复: 0

[效率算法] sqlite数据库操作事务模式及索引

[复制链接]
发表于 2010-7-20 16:36:57 | 显示全部楼层 |阅读模式
#include <SQLite.au3>
#include <SQLite.dll.au3>
main("test.db",1000)
Func main($DB,$III)
        Local $aRow
        $begin = TimerInit()
        _SQLite_Startup()
        _SQLite_Open ($DB)
        _SQLite_Exec(-1, "begin")
        _SQLite_Exec (-1, "CREATE TABLE test (id INTEGER PRIMARY KEY,body);")
        For $i = 0 To $III
                _SQLite_QuerySingleRow(-1,"Select id FROM test WHERE id='"&$i&"';",$aRow)
                If $aRow[0] Then
                        _SQLite_Exec(-1, "UPDATE test SET body='body' WHERE id='"&$i&"';")
                        ConsoleWrite("修改数据 "&$i&@CRLF)
                Else
                        _SQLite_Exec(-1, "Insert into test (id,body) values ("&$i&",'body');")
                        ConsoleWrite("插入数据 "&$i&@CRLF)
                EndIf
        Next
        _SQLite_Exec(-1, "commit")
        _SQLite_Close ()
        _SQLite_Shutdown()
        $dif = TimerDiff($begin)
        MsgBox(0,"执行时间",Floor($dif)&" 毫秒",3)
EndFunc
_SQLite_Exec(-1, "begin") 和 _SQLite_Exec(-1, "commit") 事务模式,在多次查询时速度提高明显。
sqlite不需要设定数据类型,但是最好设定下主键 INTEGER PRIMARY KEY ,在数据量大时查询速度会提高很多。
网上查了下,如果设置INTEGER PRIMARY KEY后就是打开了索引,这方面不懂,但是确实很有效,
今天测试一程序,数据量一多,循环 Select 和 UPDATE 查询几乎停滞。调试了很久才解决了这问题,所以发上来大家交流一下。

评分

参与人数 1金钱 +30 收起 理由
vigiles + 30

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-16 03:55 , Processed in 0.312844 second(s), 105 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表