3

有没有办法SQLITE_MAX_COMPOUND_SELECT在 Android 上获取 SQLite 数据库的值?在 C sqlite3 API 中,这是sqlite3_limit(db, SQLITE_LIMIT_COMPOUND_SELECT, -1),但我没有在Android SQLite API中看到这个接口。

这样做的原因是我插入了数千行,并且发出批处理 INSERT 语句比许多单行插入更快,即使它包含在事务中也是如此。但是每个语句可以插入的最大行数受限于SQLITE_MAX_COMPOUND_SELECT,因此需要将其分成几个批次。而且,出于显而易见的原因,我宁愿不对默认限制 500 进行硬编码。

4

1 回答 1

1

SQLITE_LIMIT_COMPOUND_SELECT限制不是防止内存溢出的方法(至少在 Android 系统上),而只是一个健全性检查。因此,供应商极不可能将其从默认值中减少,因此 500 应该是安全的

此外,随着一个命令中插入记录的数量越来越多,增量加速会越来越小;例如,从 5 到 50 条记录的加速比从 50 到 500 的加速要大。因此,仅使用 50 应该不会造成太大伤害。


加快重复执行的另一种方法是使用准备好的语句,使用SQLiteDatabase.compileStatement.

于 2013-01-10T18:57:53.320 回答