我有以下型号
类别(id、名称、is_active) 地点(id,名称,category_id,......)
根据用户偏好,类别将为0 或1
。基于此偏好,我想查询所有 categories.is_active = 1
的地点。
我认为有两种方法
第一种方法
- 查询并获取所有is_active = 1的Category
- 从上面检索到的类别 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')
以便我可以从第一个方法的结果中填充该类型?
最佳答案
单个 rawQuery 几乎总是比两个单独的查询更快。由于 rawQuery 中没有任何参数,因此它会非常简单,类似于;
SELECT places.*
FROM places
JOIN categories
ON places.category_id = categories.id
WHERE categories.is_active = 1
关于java - Android SQLite 使用 IN() 进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14285111/