我在 sdcard 中有 168mb sqlite 数据库,其中包含近 30 个表,每个表有 1000 多条记录。我正在使用此查询从数据库中获取结果。
select code mfr_code, name mfr_name
from manufacturers
where mfgr_type_code < 5 and code in (
select mfgr_code
from equipment_groups
)
此查询在曲线 5.0 中耗时超过 30 秒,在 Torch 6.0 设备中耗时超过 1 分钟。
子查询
SELECT mfgr_code FROM equipment_groups
正在获取超过 50k 条记录。
在 android 中进行测试时的相同查询不到 5 秒。黑莓有什么问题。
有没有其他方法可以减少此处理时间。
编辑
我正在使用此代码从数据库中获取结果
Vector vehical_type = new vector()
Cursor cursor = statement.getCursor();
while (cursor.next()) {
Row row = cursor.getRow();
vehical_type.addElement(row.getString(0));
}
第一次执行 cursor.next() 时,使用 IN 的查询需要超过 10 个。剩余的 20 秒由循环完成。
所以我使用了 EXISTS 的查询,如下所示。性能提高了很多。
但我观察到的是相同的 cursor.next() 第一次需要 1 秒,完成循环需要近 10 秒。所以在这里我得出一个结论,即循环的性能是影响获取整个数据的总响应时间的因素。
除了循环游标之外,还有其他方法来获取数据吗?
有没有可能更好地提高性能。