婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQLite速度評測代碼

SQLite速度評測代碼

熱門標(biāo)簽:電話機(jī)器人錄音師薪資 江西穩(wěn)定外呼系統(tǒng)供應(yīng)商 中國地圖標(biāo)注省份用什么符號 北京智能外呼系統(tǒng)供應(yīng)商家 孝感銷售電銷機(jī)器人廠家 無錫梁溪公司怎樣申請400電話 高德地圖標(biāo)注電話怎么沒了 奧維地圖標(biāo)注字體大小修改 智能電銷機(jī)器人教育

今天有個朋友測試 SQLite,然后得出的結(jié)論是:SQLite 效率太低,批量插入1000條記錄,居然耗時 2 分鐘!
下面是他發(fā)給我的測試代碼。我暈~~~~~~

using System.Data;
using System.Data.Common;
using System.Data.SQLite;

// 創(chuàng)建數(shù)據(jù)庫文件
File.Delete("test1.db3");
SQLiteConnection.CreateFile("test1.db3");

DbProviderFactory factory = SQLiteFactory.Instance;
using (DbConnection conn = factory.CreateConnection())
{
// 連接數(shù)據(jù)庫
conn.ConnectionString = "Data Source=test1.db3";
conn.Open();

// 創(chuàng)建數(shù)據(jù)表
string sql = "create table [test1] ([id] INTEGER PRIMARY KEY, [s] TEXT COLLATE NOCASE)";
DbCommand cmd = conn.CreateCommand();
cmd.Connection = conn;
cmd.CommandText = sql;
cmd.ExecuteNonQuery();

// 添加參數(shù)
cmd.Parameters.Add(cmd.CreateParameter());

// 開始計時
Stopwatch watch = new Stopwatch();
watch.Start();

// 連續(xù)插入1000條記錄
for (int i = 0; i 1000; i++)
{
cmd.CommandText = "insert into [test1] ([s]) values (?)";
cmd.Parameters[0].Value = i.ToString();

cmd.ExecuteNonQuery();
}

// 停止計時
watch.Stop();
Console.WriteLine(watch.Elapsed);
}

哎~~~~ 一個常識性的錯誤,我加幾行代碼 (新增代碼標(biāo)記 "http:// -------------------")。

using System.Data;
using System.Data.Common;
using System.Data.SQLite;

// 創(chuàng)建數(shù)據(jù)庫文件
File.Delete("test1.db3");
SQLiteConnection.CreateFile("test1.db3");

DbProviderFactory factory = SQLiteFactory.Instance;
using (DbConnection conn = factory.CreateConnection())
{
// 連接數(shù)據(jù)庫
conn.ConnectionString = "Data Source=test1.db3";
conn.Open();

// 創(chuàng)建數(shù)據(jù)表
string sql = "create table [test1] ([id] INTEGER PRIMARY KEY, [s] TEXT COLLATE NOCASE)";
DbCommand cmd = conn.CreateCommand();
cmd.Connection = conn;
cmd.CommandText = sql;
cmd.ExecuteNonQuery();

// 添加參數(shù)
cmd.Parameters.Add(cmd.CreateParameter());

// 開始計時
Stopwatch watch = new Stopwatch();
watch.Start();

DbTransaction trans = conn.BeginTransaction(); // -------------------
try
{
// 連續(xù)插入1000條記錄
for (int i = 0; i 1000; i++)
{
cmd.CommandText = "insert into [test1] ([s]) values (?)";
cmd.Parameters[0].Value = i.ToString();

cmd.ExecuteNonQuery();
}

trans.Commit(); // -------------------
}
catch
{
trans.Rollback(); // -------------------
throw; // -------------------
}

// 停止計時
watch.Stop();
Console.WriteLine(watch.Elapsed);
}

執(zhí)行一下,耗時 0.2 秒。這差距是不是太大了點?

為什么只是簡單啟用了一個事務(wù)會有這么大的差距呢?很簡單,SQLite 缺省為每個操作啟動一個事務(wù),那么原代碼 1000 次插入起碼開啟了 1000 個事務(wù),"事務(wù)開啟 + SQL 執(zhí)行 + 事務(wù)關(guān)閉" 自然耗費了大量的時間,這也是后面顯示啟動事務(wù)后為什么如此快的原因。其實這是數(shù)據(jù)庫操作的基本常識,大家要緊記,不好的代碼效率差的不是一點半點。

標(biāo)簽:齊齊哈爾 臨滄 泰州 阜陽 通化 荊州 那曲 海北

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQLite速度評測代碼》,本文關(guān)鍵詞  SQLite,速度,評測,代碼,SQLite,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQLite速度評測代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于SQLite速度評測代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 黄龙县| 府谷县| 安康市| 台北市| 巫山县| 甘孜县| 织金县| 仪陇县| 炉霍县| 昌吉市| 巫山县| 宜黄县| 应用必备| 西宁市| 南召县| 和林格尔县| 晋宁县| 福鼎市| 宝兴县| 岑溪市| 满洲里市| 五台县| 定日县| 聂荣县| 浙江省| 海门市| 盐城市| 青州市| 陵川县| 汉川市| 龙门县| 淳安县| 沁源县| 汕头市| 张家港市| 普洱| 通化市| 肥乡县| 霍邱县| 乌兰县| 漳平市|