最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQLite優(yōu)化方法

 更新時間:2008年09月14日 08:36:19   作者:  
SQLite的數(shù)據(jù)庫本質(zhì)上來講就是一個磁盤上的文件,所以一切的數(shù)據(jù)庫操作其實都會轉(zhuǎn)化為對文件的操作,而頻繁的文件操作將會是一個很好時的過程,會極大地影響數(shù)據(jù)庫存取的速度。
例如:向數(shù)據(jù)庫中插入100萬條數(shù)據(jù),在默認的情況下如果僅僅是執(zhí)行

sqlite3_exec(db, “insert into name values ‘lxkxf', ‘24'; ”, 0, 0, &zErrMsg);

將會重復(fù)的打開關(guān)閉數(shù)據(jù)庫文件100萬次,所以速度當(dāng)然會很慢。因此對于這種情況我們應(yīng)該使用“事務(wù)”。

具體方法如下:在執(zhí)行SQL語句之前和SQL語句執(zhí)行完畢之后加上

rc = sqlite3_exec(db, "BEGIN;", 0, 0, &zErrMsg);

//執(zhí)行SQL語句

rc = sqlite3_exec(db, "COMMIT;", 0, 0, &zErrMsg);



這樣SQLite將把全部要執(zhí)行的SQL語句先緩存在內(nèi)存當(dāng)中,然后等到COMMIT的時候一次性的寫入數(shù)據(jù)庫,這樣數(shù)據(jù)庫文件只被打開關(guān)閉了一次,效率自然大大的提高。有一組數(shù)據(jù)對比:



測試1: 1000 INSERTs

CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100));
INSERT INTO t1 VALUES(1,13153,'thirteen thousand one hundred fifty three');
INSERT INTO t1 VALUES(2,75560,'seventy five thousand five hundred sixty');
... 995 lines omitted
INSERT INTO t1 VALUES(998,66289,'sixty six thousand two hundred eighty nine');
INSERT INTO t1 VALUES(999,24322,'twenty four thousand three hundred twenty two');
INSERT INTO t1 VALUES(1000,94142,'ninety four thousand one hundred forty two');

SQLite 2.7.6:
13.061

SQLite 2.7.6 (nosync):
0.223




測試2: 使用事務(wù) 25000 INSERTs

BEGIN;
CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100));
INSERT INTO t2 VALUES(1,59672,'fifty nine thousand six hundred seventy two');
... 24997 lines omitted
INSERT INTO t2 VALUES(24999,89569,'eighty nine thousand five hundred sixty nine');
INSERT INTO t2 VALUES(25000,94666,'ninety four thousand six hundred sixty six');
COMMIT;

SQLite 2.7.6:
0.914

SQLite 2.7.6 (nosync):
0.757




可見使用了事務(wù)之后卻是極大的提高了數(shù)據(jù)庫的效率。但是我們也要注意,使用事務(wù)也是有一定的開銷的,所以對于數(shù)據(jù)量很小的操作可以不必使用,以免造成而外的消耗。

相關(guān)文章

  • SQLite教程(十一):臨時文件

    SQLite教程(十一):臨時文件

    這篇文章主要介紹了SQLite教程(十一):臨時文件,本文講解了七種臨時文件并對它們一一具體說明,并相關(guān)的編譯時參數(shù)和指令、其它優(yōu)化策略等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • Sqlite數(shù)據(jù)庫里插入數(shù)據(jù)的條數(shù)上限是500

    Sqlite數(shù)據(jù)庫里插入數(shù)據(jù)的條數(shù)上限是500

    sqlite每次只能插入的數(shù)據(jù)不能超過500條數(shù)據(jù),大家在使用的時候需要注意一下。
    2015-04-04
  • Sqlite 操作類代碼

    Sqlite 操作類代碼

    這兩天用了用SQLite,感覺比SQL CE好用多了,最主要的是性能好多了.這一點對手持設(shè)備來講很重要.閑話少說,下來將怎么在WM用.NET CF訪問SQLite.
    2009-11-11
  • SQLite教程(十四):C語言編程實例代碼(2)

    SQLite教程(十四):C語言編程實例代碼(2)

    這篇文章主要介紹了SQLite教程(十四):C語言編程實例代碼(2),本文講解了高效的批量數(shù)據(jù)插入和數(shù)據(jù)查詢代碼實例,需要的朋友可以參考下
    2015-05-05
  • SQLite3中的日期時間函數(shù)使用小結(jié)

    SQLite3中的日期時間函數(shù)使用小結(jié)

    這篇文章主要介紹了SQLite3中的日期時間函數(shù)使用小結(jié),同時介紹了一些SQLite數(shù)據(jù)庫的基本知識,需要的朋友可以參考下
    2014-05-05
  • SQL中使用ESCAPE定義轉(zhuǎn)義符詳解

    SQL中使用ESCAPE定義轉(zhuǎn)義符詳解

    這篇文章主要介紹了SQL中使用ESCAPE定義轉(zhuǎn)義符的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • python之sqlalchemy創(chuàng)建表的實例詳解

    python之sqlalchemy創(chuàng)建表的實例詳解

    這篇文章主要介紹了數(shù)據(jù)庫之sqlalchemy創(chuàng)建表的實例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家掌握理解這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • SQLITE3 使用總結(jié)

    SQLITE3 使用總結(jié)

    Sqlite3 的確很好用。小巧、速度快。但是因為非微軟的產(chǎn)品,幫助文檔總覺得不夠。這些天再次研究它,又有一些收獲,這里把我對 sqlite3 的研究列出來,以備忘記。也希望能對大家有所幫助。
    2014-08-08
  • SQLite教程(三):數(shù)據(jù)表和視圖簡介

    SQLite教程(三):數(shù)據(jù)表和視圖簡介

    這篇文章主要介紹了SQLite教程(三):數(shù)據(jù)表和視圖簡介,本文講解了創(chuàng)建數(shù)據(jù)表、表的修改、表的刪除、創(chuàng)建視圖、刪除視圖等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • SQLite中的WAL機制詳細介紹

    SQLite中的WAL機制詳細介紹

    這篇文章主要介紹了SQLite中的WAL機制詳細介紹,本文講解了什么是WAL、WAL如何工作、WAL的優(yōu)點與缺點、WAL引入的兼容性問題、WAL引入的性能問題等內(nèi)容,需要的朋友可以參考下
    2015-01-01

最新評論

丰顺县| 祥云县| 沂水县| 和龙市| 阿拉善左旗| 阳西县| 黔江区| 英吉沙县| 文水县| 宁安市| 保定市| 汶上县| 轮台县| 景宁| 綦江县| 宝兴县| 浦城县| 宁强县| 铜鼓县| 安徽省| 大宁县| 宣威市| 凌海市| 阿拉善左旗| 三明市| 磐安县| 顺义区| 敖汉旗| 罗山县| 泗阳县| 宜兴市| 辽源市| 望谟县| 黄山市| 家居| 剑阁县| 乌拉特前旗| 两当县| 阿鲁科尔沁旗| 玉溪市| 安福县|