如何获取本地文件的id

本文关键字:文件 id 何获取 获取 | 更新日期: 2023-09-27 18:09:09

我有一个数据库表,它用以下定义保存文件/文件夹结构:

id    parentid     fileOrFolderName
111    222          aaa.txt
222    333          folderA
333    Root         folderB
444    222          bbb.doc

...........

"Root"是预定义的根文件夹的特殊Id。因此,上述记录的意思是:有一个文件位于"Rootfolder'folderB'folderA'aaa.txt",其id为"111"。

现在,给定文件的完整路径,我想获得它的id。例如:

GetFileId("RootFolder'folderB'folderA'aaa.txt")将返回"111"。

这个表中大约有10 - 5万条记录,我如何正确有效地编写GetFileId函数?

这个问题不限于任何语言或数据库,我需要的是正确的算法。提前感谢。

如何获取本地文件的id

对于这种数据结构,明显的算法(每层单独查找一次)是唯一有效的。

对于目录层次结构中的每一层,执行:

SELECT id FROM MyTable WHERE parentid = ? AND fileOrFolderName = ?

您可以将所有查找组合到一个嵌套语句中:

SELECT id FROM MyTable
WHERE parentid =
   (SELECT id FROM MyTable
    WHERE parentid =
       (SELECT id FROM MyTable
        WHERE parentid = 'Root'
          AND fileOrFolderName = 'folderB')
      AND fileOrFolderName = 'folderA')
  AND fileOrFolderName = 'aaa.txt'

然而,这不会更快,但会使查询构造更复杂。


为了使它更快,使用适当的索引。(parentidfileOrFolderName两列的索引应该有所帮助。如果对这两列和id列进行覆盖索引可能会好一些。