Android:如何找到 SQLITE_MAX_COMPOUND_SELECT

标签 android performance sqlite

有没有办法得到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/

相关文章:

Python:读取 CSV 到列表是否比 CSV 更快以使用键检查来听写?

java - 不在 onCreate 方法中添加 SQLite 条目

java - 如何在 Android 应用程序开发中从 SQLite 数据库检索图像?

android - 如何使用正则表达式解析街道地址?

android - 如何在没有 ArrayIndexOutOfBoundsException 的情况下从 AsyncTask 更新 MapView 覆盖项

java - Android:动画自定义 View

javascript - .filter (':last' ) 与 .last()

android - 在 Android 中执行搜索时如何完成当前 Activity ?

ios - 计算 ALAssetLibrary 的最快方法?

java - SQLite 如果存在现有数据则跳过或覆盖