sqlite插入速度优化方案 申请加精

sqlite插入速度优化方案 申请加精,第1张

概述本帖最后由 yxmshaka 于 2013-4-10 17:52 编辑 我们创建测试的表是user,它有四个字段id,name,age,height,remark,测试用的小米2,默认条数为100行。 ? 代码片段,双击复制 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
本帖最后由 yxmshaka 于 2013-4-10 17:52 编辑

我们创建测试的表是user,它有四个字段ID,name,age,height,remark,测试用的小米2,默认条数为100行。
? @H_419_326@
1。使用ContentValues插入。完成时间:4805493666(纳秒)
23 @H_419_326@
2。使用基本slq语句插入。完成时间:3734808485(纳秒)
13 @H_419_326@
3。使用sqlliteStatement插入。完成时间:4754616203(纳秒)
19 @H_419_326@
4。使用一次插入多条的方式。完成时间:245414315(纳秒)
22 @H_419_326@
5.使用事务处理插入方式。完成时间:229787881(纳秒)
16 @H_419_326@

最近在忙cocos2d-x开发的事情,睡得比较晚,临睡前 看到了一篇文章 感觉很好 ,跟大家分享了,这个绝对是精华所在。
刚才有人说转帖要说明出处又回去找了一遍找到了做人要厚道 哈
转自:http://blog.csdn.net/ihrthk/article/details/8741047
@H_419_326@ 回帖推荐

laozhao查看楼层

实际测试当同时使用事务时,循环内部使用ContentValues更快 ContentValues: 342224121 270477293 488250732 623504637 164733888 149871825 158111570 ------ sql: 210998534 743438721 241638183 187103272 172088624

yxmshaka查看楼层

ContentValues快 这个是必然的 但老程序员对t-sql都有情怀的 总结

以上是内存溢出为你收集整理的sqlite插入速度优化方案 申请加精全部内容,希望文章能够帮你解决sqlite插入速度优化方案 申请加精所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1174114.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

代码片段,双击复制
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 //MysqLiteOpenHelper作为一个访问sqlite的帮助类,提供两方面的功能 //1.getReadableDatabase(),getWritableDatabase()可以获得sqliteDatatbase对象, //对这个对象进行相关 *** 作 //2.提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级@R_301_6948@时进行 *** 作 public class MysqLiteOpenHelper extends sqliteOpenHelper { static final String DATABASE_name = "meacs.db" ; String TAG = "MysqLiteOpenHelper" ; public MysqLiteOpenHelper(Context context) { this (context,DATABASE_name, null , 1 ); } MysqLiteOpenHelper(Context context,85)!important">int version) { } // 必须要有这一个构造方法 CursorFactory factory,monospace!important; min-height:auto!important"> version) { super // Todo auto-generated constructor stub } // 当@R_301_6948@第一次创建的时候被调用, // 当调用getReadableDatabase ()或getWritableDatabase 的时候 @OverrIDe voID onCreate(sqliteDatabase db) { // Todo auto-generated method stub Log.d(TAG, "onCreate" ); String sql = "create table user(ID integer primary key autoincrement," + "name varchar(20)," + "age integer,255)!important">"height long," "remark varchar(12))" ; db.execsql(sql); } close() { sqliteDatabase db = .getWritableDatabase(); db.execsql( "drop table user" ); } @OverrIDe onUpgrade(sqliteDatabase db,monospace!important; min-height:auto!important"> oldVersion,monospace!important; min-height:auto!important"> newVersion) { // Todo auto-generated method stub "onUpgrade" ); } }
/** * ContentValues方式 * * @param sum * @return */ long insert1( sum) { long before = System.nanoTime(); MysqLiteOpenHelper dbHelper = new MysqLiteOpenHelper(MainActivity. ); // 得到@R_301_6948@对象 sqliteDatabase db = dbHelper.getWritableDatabase(); for ( i = 0 ; i < sum; i++) { ContentValues cv = ContentValues(); cv.put( "name" "zhangsan" ); "age" "23" ); "height" 1.78 ); "remark" "无" ); db.insert( "user" } db.close(); after = System.nanoTime(); return after - before; }
insert2( sum) { before = System.nanoTime(); ); // 得到@R_301_6948@对象 sqliteDatabase db = dbHelper.getWritableDatabase(); ; i < sum; i++) { "insert into user(name,remark) values('zhangsan',23,1.78,'无')" ; db.execsql(sql); } db.close(); after = System.nanoTime(); after - before; }
insert3( sqliteDatabase db = dbHelper.getWritableDatabase(); ; sqliteStatement stmt = db.compileStatement(sql); ; i < sum; i++) { stmt.clearBindings(); stmt.bindString( ); stmt.bindLong( 2 23 ); 3 178 ); 4 ); stmt.execute(); } db.close(); after = System.nanoTime(); after - before; }
insert4( ; i < sum / 10 ; i++) { "('zhangsan'," ; db.execsql(sql); } db.close(); after = System.nanoTime(); after - before; }
insert5( db.beginTransaction(); ; i < sum; i++) { ; db.execsql(sql); } db.setTransactionSuccessful(); db.endTransaction(); db.close(); after = System.nanoTime(); after - before; }