wz4705 发表于 2010-7-20 16:36:57

sqlite数据库操作事务模式及索引

#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 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]
查看完整版本: sqlite数据库操作事务模式及索引