有没有办法得到SQLITE_MAX_COMPOUND_SELECT
的值? Android 上的SQLite 数据库?在 C sqlite3 API 中,这是 sqlite3_limit(db, SQLITE_LIMIT_COMPOUND_SELECT, -1)
,但我没有在 Android SQLite API 中看到此接口(interface)。 .
这样做的原因是我要插入数千行,并且发出批处理 INSERT 语句比许多单行插入要快,即使它包含在事务中也是如此。但是每个语句可以插入的最大行数受到 SQLITE_MAX_COMPOUND_SELECT
的限制,因此需要将其分成几批。而且,出于显而易见的原因,我宁愿不对默认限制 500 进行硬编码。
最佳答案
SQLITE_LIMIT_COMPOUND_SELECT
限制不是防止内存溢出的方法(至少在 Android 系统上如此),而只是一种完整性检查。
因此,供应商极不可能减少它的默认值,因此 500 应该是安全的。
此外,随着一条命令中插入记录的数量越来越大,增量加速会越来越小;例如,从 5 条记录到 50 条记录的加速将大于从 50 条记录到 500 条记录的加速。 因此,仅使用 50 应该不会造成太大伤害。
另一种加速重复执行的方法是使用准备好的语句,使用 SQLiteDatabase.compileStatement
.
关于Android:如何找到 SQLITE_MAX_COMPOUND_SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14264108/