用于对项目进行分组并将单个项目映射到其他组成员的数据结构

Data structure for grouping items and mapping individual items to other group members

本文关键字:项目 映射 其他 数据结构 单个 组成员 用于      更新时间:2023-10-16

我需要创建实体组(特别是文件名(。 然后,当给定一个特定的文件名时,我需要获取它的其他组成员。我当前的解决方案涉及将文件名放在具有两列的 SQLite 表中:文件名和整数组 ID。 给定文件名后,我运行如下查询:

SELECT file_name FROM files WHERE group_id =
(SELECT group_id FROM files WHERE file_name = "sampleFileName.docx")

我想知道这个问题是否有更合适或更高性能的解决方案。例如,是否要考虑其他数据结构? 也许可以序列化或从数据库表构造? 感谢您的任何意见。

只要file_name是唯一键,您的解决方案就可以了(否则,子查询可能会返回多个记录,这将生成运行时错误(。

这也可以用自连接来表示:

select f.file_name 
from files f
inner join files g on g.group_id = f.group_id
where g.file_name = 'sampleFileName.docx'

如果子查询返回null,您的查询将不返回任何数据,因此您可以使用exists

select f.*
from files f
where exists (select 1 
from files ff 
where ff.group_id = f.group_id and 
ff.file_name = 'sampleFileName.docx'
);

如果你有索引files (group_id,file_name),性能会更好。