如何获取本地文件的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函数?
这个问题不限于任何语言或数据库,我需要的是正确的算法。提前感谢。
对于这种数据结构,明显的算法(每层单独查找一次)是唯一有效的。
对于目录层次结构中的每一层,执行:
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'
然而,这不会更快,但会使查询构造更复杂。
为了使它更快,使用适当的索引。(parentid
和fileOrFolderName
两列的索引应该有所帮助。如果对这两列和id
列进行覆盖索引可能会好一些。