论execSQL与executeInsert执行效率之差

文章探讨了SQLite的execSQL方法与SQLiteStatement的executeInsert在执行效率上的差异,通过实验发现,尽管有观点认为executeInsert更高效,但实际测试结果显示,execSQL在数据量较大或开启事务时表现出更高的执行效率。建议在处理大数据操作时,结合异步处理和事务开启以提升性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         看到一遍关于SQLiteDatabase 的execSQL方法和SQLiteStatement的executeInsert的执行效率之比。文中最终得出结论后者比前者效率高,带着疑惑的心态让验证了一把却得出了截然相反的结论。无论在数据量大小或则是否开启事务操作上SQLiteDatabase 的execSQL的执行效率还是要比SQLiteStatement的executeInsert高。

以下就是我所做的一个验证过程

     新建一个数据库和test表

public class DBhelper extends SQLiteOpenHelper {
	private static final String DATABAS_NAME = "testdb";
	private static final int DATABAS_VERSION = 1;
	public DBhelper(Context context) {
		super(context, DATABAS_NAME, null, DATABAS_VERSION);
	}
	@Override
	public void onCreate(SQLiteDatabase db) {
		StringBuffer sql  =new StringBuffer();
		sql.append("create table test");
		sql.append("(_id int PRIMARY KEY,name varchar,gender int,age int,phoneNumber varchar,address varchar)");	 
        db.execSQL(sql.toString());		
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		
	}
}
使用SQLiteDatabase 的execSQL方法和SQLiteStatement的executeInsert方法进入插入, 比较执行所需要的时间:

public class Dao {
	private DBhelper dbHelper;
	private SQLiteDatabase db;
	private StringBuffer sql_insert;
	private List<Tester> testers;

	public Dao(Context context) {
		this.dbHelper = new DBhelper(context);
		this.db = dbHelper.getWritableDatabase();
		sql_insert = new StringBuffer();
		sql_insert
				.append("INSERT INTO test(name,gender,age,phoneNumber,address) ");
		sql_insert.append(" VALUES( ?, ?, ?, ?, ?)");
		testers = new ArrayList<Tester>();
		// 测试数据
		for (int i = 0; i < 1000; i++) {
			Tester tester = new Tester();
			tester.setId(i);
			tester.setName("name" + i);
			tester.setGender(0);
			tester.setAge(123);
			tester
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值