关于andriod 数据库操作的优化
来源:互联网 发布:mysql distinct 编辑:程序博客网 时间:2024/05/18 03:46
转载地址:http://www.trinea.cn/android/database-performance/
1.创建索引2.事物操作
Sqlite默认会为每个插入、更新操作创建一个事务,并且在每次插入、更新后立即提交。这样如果连续插入100次数据实际是创建事务->执行语句->提交这个过程被重复执行了100次。如果我们显示的创建事务->执行100条语句->提交会使得这个创建事务和提交这个过程只做一次,通过这种一次性事务可以使得性能大幅提升。尤其当数据库位于sd卡时,时间上能节省两个数量级左右。
public void insertWithOneTransaction() { SQLiteDatabase db = sqliteOpenHelper.getWritableDatabase(); // Begins a transaction db.beginTransaction(); try { // your sqls for (int i = 0; i < 100; i++) { db.insert(yourTableName, null, value); } // marks the current transaction as successful db.setTransactionSuccessful(); } catch (Exception e) { // process it e.printStackTrace(); } finally { // end a transaction db.endTransaction(); }}
3.sql语句的拼接 尽量用stringbuilder,简单的string 会额外的增加开销
4.精简查询语句,返回需要返回的字段.每个字段的查询都需要时间
5.游标获取列的索引, cursor.getColumnIndex(),可以在建表的时候用static变量记住某列的index,直接调用相应index而不是每次查询。
2
3
4
5
6
7
8
9
publicstaticfinalString HTTP_RESPONSE_TABLE_ID =android.provider.BaseColumns._ID;
publicstaticfinalString HTTP_RESPONSE_TABLE_RESPONSE ="response";
publicstaticfinalint HTTP_RESPONSE_TABLE_ID_INDEX =0;
publicstaticfinalint HTTP_RESPONSE_TABLE_URL_INDEX =1; //
publicList<Object>getData(){
……
cursor.getString(HTTP_RESPONSE_TABLE_RESPONSE_INDEX);
……
}
6 单线程池的 异步操作
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();singleThreadExecutor.execute(new Runnable() { @Overridepublic void run() {// db operetions, u can use handler to send message afterdb.insert(yourTableName, null, value);handler.sendEmptyMessage(xx);}});
0 0
- 关于andriod 数据库操作的优化
- 关于andriod图片的优化
- oracle数据库的优化-关于rownum操作
- andriod数据库的开发
- 关于数据库的操作
- 关于数据库优化的小结!
- 关于MYsql数据库的优化
- 关于数据库的优化查询
- 关于MYsql数据库的优化
- 关于sqlite数据库的优化
- 关于Mysql数据库的优化
- 数据库优化--操作优化
- andriod优化
- 关于写入数据库的操作
- 关于数据库的一些操作
- ASP关于数据库的操作
- 关于数据库的相关操作
- Xutils3关于数据库的操作
- openwrt DTSI文件解译
- 工具栏中嵌入Combo Box
- MySQL主从切换步骤。
- IOS怎么样更有效率更全面的使用xcode之四大问题
- unicode模式下写日志文件
- 关于andriod 数据库操作的优化
- iOS之JSONKit解析JSON
- Redis学习
- [笔记]关于系统字体变化导致APP界面混乱问题
- Java基础之String
- Resolve Tree Conflict SVN
- C#窗体间传值
- 单例模式的多种实现
- 证明ABC猜想:意义重大,却无人能识?