Android:如何找到 SQLITE_MAX_COMPOUND_SELECT

2023-12-31

有没有办法获取的值SQLITE_MAX_COMPOUND_SELECT https://www.sqlite.org/limits.htmlAndroid 上的 SQLite 数据库?在 C sqlite3 API 中,这是sqlite3_limit(db, SQLITE_LIMIT_COMPOUND_SELECT, -1),但我没有看到这个接口暴露在Android SQLite API https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html.

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


The SQLITE_LIMIT_COMPOUND_SELECTlimit 不是防止内存溢出的方法(至少在 Android 系统上),而只是一种健全性检查。 因此,供应商极不可能reduce它不同于默认值,所以 500 应该是安全的。

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


加快重复执行速度的另一种方法是使用准备好的语句,其中SQLiteDatabase.compileStatement http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#compileStatement%28java.lang.String%29.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:如何找到 SQLITE_MAX_COMPOUND_SELECT 的相关文章

随机推荐