用于对项目进行分组并将单个项目映射到其他组成员的数据结构
Data structure for grouping items and mapping individual items to other group members
我需要创建实体组(特别是文件名(。 然后,当给定一个特定的文件名时,我需要获取它的其他组成员。我当前的解决方案涉及将文件名放在具有两列的 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)
,性能会更好。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法在 CLion 中构建 C++ 项目
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- QT通过C++添加映射QML项目
- 用于对项目进行分组并将单个项目映射到其他组成员的数据结构
- 在5d映射C++中查找项目
- 映射和设置总是一次分配一个项目吗
- 将项目"更新插入"到映射<键、shared_ptr的正确方法<foo>>
- C++将映射传递到 qml 以确定项目的可见性
- 在 stl 映射中插入新项目时,将覆盖到第一个元素
- 将项目附加到YAML文件中的映射中
- 将二维空间中的项目映射到内存中
- 如果使用预定义的映射,重建项目将花费非常长的时间
- QGraphicsScene:如何映射项目移动到qundo命令
- 如何映射项目坐标
- 如何从无序映射中删除多个项目,同时迭代它
- 如何从std::映射中筛选项目