佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > SQLite優(yōu)化方法

SQLite優(yōu)化方法

熱門標(biāo)簽:呼叫中心市場(chǎng)需求 AI電銷 Linux服務(wù)器 鐵路電話系統(tǒng) 百度競(jìng)價(jià)排名 網(wǎng)站排名優(yōu)化 服務(wù)外包 地方門戶網(wǎng)站
例如:向數(shù)據(jù)庫中插入100萬條數(shù)據(jù),在默認(rèn)的情況下如果僅僅是執(zhí)行

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

將會(huì)重復(fù)的打開關(guān)閉數(shù)據(jù)庫文件100萬次,所以速度當(dāng)然會(huì)很慢。因此對(duì)于這種情況我們應(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í)候一次性的寫入數(shù)據(jù)庫,這樣數(shù)據(jù)庫文件只被打開關(guān)閉了一次,效率自然大大的提高。有一組數(shù)據(jù)對(duì)比:



測(cè)試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




測(cè)試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ù)也是有一定的開銷的,所以對(duì)于數(shù)據(jù)量很小的操作可以不必使用,以免造成而外的消耗。
您可能感興趣的文章:
  • Android開發(fā)之SQLite的使用方法
  • SQLite 中文指南之FAQ
  • SQLite中的B-Tree實(shí)現(xiàn)細(xì)節(jié)分析
  • sqlite中文亂碼問題原因分析及解決
  • SQLite3中的日期時(shí)間函數(shù)使用小結(jié)
  • sqlite3 top的查詢及l(fā)imit語法介紹
  • Sqlite 常用函數(shù) 推薦
  • SQLite 錯(cuò)誤碼整理
  • sQlite常用語句以及sQlite developer的使用與注冊(cè)

標(biāo)簽:湖南 湘潭 衡水 銅川 蘭州 仙桃 崇左 黃山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQLite優(yōu)化方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    汾阳市| 和平县| 军事| 墨玉县| 蒙城县| 会宁县| 安顺市| 遂平县| 张家港市| 霍邱县| 综艺| 铁岭市| 台山市| 河间市| 高要市| 临澧县| 家居| 双牌县| 来安县| 弥渡县| 普格县| 扬州市| 石阡县| 邛崃市| 工布江达县| 中宁县| 长春市| 沙雅县| 巫山县| 兰州市| 随州市| 宜丰县| 绵竹市| 山阴县| 楚雄市| 和龙市| 安新县| 徐汇区| 巨鹿县| 福海县| 谷城县|