我有以下型号
类别(id,name,is_active) 地方(id,name,category_id,.....)
根据用户偏好,类别将为0 or 1
。根据此偏好设置,我想查询categories.is_active = 1
。
我认为有两种方法
第一种方法
第二种方法
使用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')
,以便我可以从第一个方法的结果中填充它?
答案 0 :(得分:3)
单个rawQuery几乎总是比两个单独的查询更快。由于rawQuery中没有任何参数,因此非常简单,例如;
SELECT places.*
FROM places
JOIN categories
ON places.category_id = categories.id
WHERE categories.is_active = 1