2

我有以下型号

类别(id,名称,is_active)地点(id,名称,category_id,.....)

根据用户偏好,类别将是0 or 1。基于此偏好,我想查询其categories.is_active = 1.

我认为有两种方法

第一种方法

  1. 查询并获取is_active = 1的所有Categories
  2. 从上述检索到的类别 ID 集合中获取所有地点的列表。

第二种方法

使用 JOIN 编写 RawQuery 并设置条件。

优化速度的最佳方法是什么?

我试过什么?

// Get Active Categories
public Cursor getActiveCategories() {
    return db.query(TABLE_CATEGORIES, new String[] { COLUMN_ID,
            COLUMN_NAME, COLUMN_SLUG, COLUMN_ACTIVE }, COLUMN_ACTIVE + "="
            + "'1'", null, null, null, COLUMN_NAME, null);
}


// Get Places
public Cursor getPlaces() {
    return db.query(TABLE_PLACES, new String[] { COLUMN_ID, COLUMN_NAME },
            " type IN ('1','2')", null, null, null, null);
}

在上面的代码中,如何IN ('1','2')动态插入类型以便我可以从第一种方法的结果中填充它?

4

1 回答 1

3

一个 rawQuery 几乎总是比两个单独的查询快。由于您在 rawQuery 中没有任何参数,因此它将非常简单,例如;

SELECT places.* 
FROM places 
JOIN categories
  ON places.category_id = categories.id
WHERE categories.is_active = 1
于 2013-01-11T19:29:43.687 回答