在sqlite数据库中,通过字符串列表进行选择的最快方法是什么?
我的数据库结构大致如下: 表1(名称)-<表2-<表3(分数) 其中-<表示一对多关系。我需要做的是为给定列表中的每个字符串找到表3中具有最大分数值的链接条目。我现在做这件事的方式很慢,我想知道它是否可以加快 我是如何做到这一点的:在sqlite数据库中,通过字符串列表进行选择的最快方法是什么?,sqlite,Sqlite,我的数据库结构大致如下: 表1(名称)-
SELECT k.score,k.yaw,k.pitch,k.roll,k.kp_number,k.ke_number,k.points,k.elems --various fields of third table
FROM File
JOIN FaceDetection AS d ON d.f_id=File.file_id --joining second table
JOIN FaceKey AS k ON k.face_det=d.fd_id --joining third table
WHERE name=:fld
ORDER BY k.score DESC
我打开事务,用上面的文本准备查询,然后在循环中从数据库中检索我感兴趣的条目,然后提交事务。什么是更好、更快的方法?索引可用于所有用于查找或排序的列,但查询不能对每个表使用多个索引 检查输出以查看此查询是否进行表扫描或使用索引 您不是从任何表返回值,而是从
FaceKey
返回值,因此实际上不需要执行联接。
但是,按以下方式重写查询可能有帮助,也可能没有帮助:
SELECT score,
yaw,
pitch,
roll,
kp_number,
ke_number,
points,
elems
FROM FaceKey
WHERE face_det IN (SELECT fd_id
FROM FaceDetection
WHERE f_id IN (SELECT file_id
FROM File
WHERE name = :fld))
ORDER BY score DESC
你的问题似乎很好。数据库本身进行了大量优化。你的交易电话也必须是那样的。我看没有办法提高效率。你能把
WHERE
条件作为的和条件放在上吗?你在ID字段上放了索引了吗?我想要的答案我最终得到了[here][1]。[1]: