`
21jhf
  • 浏览: 130319 次
  • 来自: ...
社区版块
存档分类
最新评论

android sqlite 批量插入数据优化代码

 
阅读更多
SQLiteDatabase db = dh.getWritableDatabase();
				db.execSQL("PRAGMA cache_size=12000;");
				db.beginTransaction();
				try {
					for (int i = 0; i < 10000; i++) {
						String id = "8aebf7b03e410db4013e43ed2369" + String.format("%04d", i);

						String sql = generateSql();

						SQLiteStatement sqlListStatment = db.compileStatement(sql);
						sqlListStatment.bindString(1, id);
						sqlListStatment.bindString(2, "20130426091902-187");
						sqlListStatment.executeInsert();
						// db.execSQL(sql);
					}
					db.setTransactionSuccessful();
				} catch (android.database.SQLException e) {
					e.printStackTrace();
				} finally {
					db.endTransaction();
					db.close();
					dh.close();

				}

性能优化要点,
1,使用事务
db.beginTransaction();
db.setTransactionSuccessful();
db.endTransaction();
使用事务后1万条数据需要13秒左右插入完成
2,使用SQLiteStatement ,预先编译sql再执行,通过传递参数方式来插入数据
改造成这种方式后1万条数据需要8秒左右插入完成

下面是如果用ormlite的时候的处理方法
关键是TransactionManager.callInTransaction和dao.executeRaw函数加上args
try {
					TransactionManager.callInTransaction(em.getConnectionSource(), new Callable<Void>() {
						@Override
						public Void call() throws Exception {
							try {
								Dao<?, ?> dao = null;
								dao = em.findDao(Task.class);
								em.enableCache();
								for (int i = 0; i < 10000; i++) {
									String id = "8aebf7b03e410db4013e43ed2369" + String.format("%04d", i);
									String sql = generateSql();

									Log.d("MyTag", sql);
									String[] args = new String[] { id, "20130426091902-187" };
									dao.executeRaw(sql, args);
								}
							} catch (SQLException e) {
								e.printStackTrace();
							}
							return null;
						}
					});
				} catch (SQLException e) {
					e.printStackTrace();
				}


从结果来看用Ormlite还是慢了些,一个9378毫秒,一个6613毫秒,如果谁还有大批量操作sqlite数据库优化的相关内容,麻烦给我留言,谢谢
  • 大小: 21.7 KB
分享到:
评论

相关推荐

    android操作数据库Sqlite源代码

    在Android开发中,SQLite是一个...实际开发中,还需要考虑数据同步、数据备份、数据加密等高级功能,以及性能优化,如批量插入、使用索引等。学习并理解这些知识点,将有助于你更好地在Android项目中运用SQLite数据库。

    android SQLITE源代码

    `SQLiteOpenHelper`的子类可以获取到`SQLiteDatabase`对象,通过这个对象可以执行SQL语句,如创建表、插入数据、查询数据、更新数据和删除数据等。 4. **SQL语句的执行**: - **CREATE TABLE**:用于创建新表,...

    Android基于Sqlite的学生信息管理系统源码.zip

    为了提高数据库操作性能,可以使用批量插入、预编译语句(SQLiteStatement)以及适当的数据缓存策略。同时,避免在主线程中执行耗时的数据库操作,以免影响用户体验。 综上所述,"Android基于SQLite的学生信息管理...

    Android SqliteManager 源码.rar

    源码展示了如何使用SQLite的SQL语句进行数据查询、插入、更新和删除。同时,我们还能看到如何使用BEGIN、COMMIT和ROLLBACK来处理数据库事务,确保数据的一致性和完整性。 五、数据库性能优化 SqliteManager源码中...

    Android之SQlite存储

    例如,批量插入数据而不是逐条插入,可以减少数据库事务的开销;在读取大量数据时,使用CursorLoader或者LiveData可以避免阻塞主线程;定期清理不再使用的数据,以减少数据库大小;适当使用索引,提升查询速度,但要...

    uniAPP使用sqlite数据库demo

    - 插入数据:使用`INSERT INTO`语句将新记录添加到表中。例如,`INSERT INTO students (name, age) VALUES ('张三', 20);` - 查询数据:使用`SELECT`语句获取表中的数据。例如,`SELECT * FROM students WHERE age...

    Android SqliteManager 源码.zip

    6. 性能优化:SQLiteManager可能会包含一些性能优化策略,比如使用事务来提高批量插入或更新的效率,或者通过缓存来减少不必要的数据库访问。 通过对Android SqliteManager源码的深入研究,开发者不仅可以了解如何...

    安卓SQLite数据库相关-实现对没填的工时记录操作android数据库sqlite.zip

    例如,当批量更新或插入数据时,可以开启一个事务,将一系列操作包裹在`beginTransaction()`、`setTransactionSuccessful()`和`endTransaction()`之间。 需要注意的是,描述中提到“程序如果跑不起来需要自调”,这...

    sqlite优化方法比较

    SQLite是Android平台上广泛使用的轻量级关系型数据库,它允许应用程序在本地存储和管理数据,无需依赖中央服务器。SQLite优化对于提升应用性能至关重要,尤其是在处理大量数据或频繁读写操作时。以下是一些关于...

    Android review SQLite

    - 在这个“SQLiteTest”中,可能包含了用于测试SQLite功能的代码示例,例如创建数据库、执行查询、插入数据等操作,可以帮助开发者更好地理解和实践SQLite在Android中的应用。 通过以上知识点的学习和实践,开发者...

    001AndroidSqlite

    在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的...为了深入理解,你可以下载提供的"001AndroidSqlite"压缩包,里面可能包含相关的源代码示例,这将有助于你更好地掌握实践中的技巧和最佳实践。

    android 操作sqlite数据库源码

    在Android开发中,SQLite是一个重要的组成部分,它是一个轻量级的数据库系统,允许开发者在应用程序中存储、管理和处理数据。SQLite被广泛应用于Android应用,因为它具有高效、可靠且易于使用的特性。下面我们将深入...

    android SQLite的使用

    为了提高效率,还可以考虑使用事务来处理多条SQL操作,比如批量插入或更新: ```java public void batchInsert(List&lt;User&gt; users) { SQLiteDatabase db = dbHelper.getWritableDatabase(); db.beginTransaction()...

    Android基础-初识SQLite(源代码)

    在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻...在实际项目中,应根据需求设计合理的数据库结构,并合理运用SQL语句进行数据操作,同时注意性能优化,如使用事务处理批量操作,避免频繁的数据库读写。

    Android代码-一个批量删除联系人的Demo.zip

    联系人数据在Android设备上是以SQLite数据库的形式存储的。Content Provider会与SQLite数据库进行通信,执行查询、插入、更新和删除等操作。 4. **批量操作(Bulk Operations)**: 在执行批量删除时,为了提高...

    SQLite基本操作

    SQLite是一种轻量级的、嵌入式的关系型数据库,常用于Android等移动平台的数据存储。在Android应用开发中,SQLite提供了高效、可靠的数据管理能力。本文将详细介绍SQLite的基本操作,包括数据库的创建、版本升级、...

    Android SQLite操作之大数据处理与同时读写方法

    总结,Android中的SQLite大数据处理和同时读写涉及批量写入、事务管理、并发控制等多个方面。理解并合理运用这些技巧,可以显著提升SQLite数据库的性能和并发能力,使应用运行更加流畅。开发者还可以根据具体需求,...

    Android的轻量级数据库SQLite的使用实践小项目 生管理系统

    在Android开发中,SQLite是一个非常重要的轻量级数据库系统,尤其适用于存储应用程序的结构化数据。SQLite被集成在Android系统中,为开发者提供了一个高效、可靠且易于使用的数据存储解决方案。在这个“学生管理系统...

Global site tag (gtag.js) - Google Analytics