【问题标题】:Fetching data from sqlite is very slow in blackberry在黑莓中从 sqlite 获取数据非常慢
【发布时间】:2012-07-10 01:04:19
【问题描述】:

我在 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 秒。所以在这里我得出一个结论,即循环的性能是影响获取整个数据的总响应时间的因素。

那么除了循环游标之外,还有其他获取数据的方法吗?

有没有可能更好地提高性能。

【问题讨论】:

    标签: database performance blackberry sqlite


    【解决方案1】:

    您是否尝试过重写查询?这里有一些想法:

    如果equipment_groups.mfgr_code 列不是唯一的:

    SELECT code mfr_code, name mfr_name
      FROM manufacturers
     WHERE mfgr_type_code < 5
       AND EXISTS (
               SELECT 1
                 FROM equipment_groups
                WHERE mfgr_code = code
           );
    

    如果是唯一的:

    SELECT code mfr_code, name mfr_name
    FROM      manufacturers
    LEFT JOIN equipment_groups ON mfgr_code = code
    WHERE mfgr_type_code < 5;
    

    【讨论】:

    • 您好,感谢您的回复。 Equipment_groups.mfgr_code 列不是唯一的,所以我使用了第一个查询,但没有运气,它在曲线 5.0 中花费了 30 多秒。当我单独执行这两个查询时,我能够在 10 秒内得到结果,但是当我将它们结合起来时,它会花费很多时间。可能是什么问题呢。是设备问题还是黑莓 SQLITE 在处理海量数据时性能缓慢?
    • 您可以通过添加每个相关的CREATE TABLE 语句来编辑您的问题,以查看您有哪些索引。你也可以玩EXPLAINsqlite.org/lang_explain.html或者你可以阅读SQLite优化器的技巧:sqlite.org/optoverview.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多