C# 如何获取本地文件的id

C# 如何获取本地文件的id,c#,database,algorithm,sqlite,C#,Database,Algorithm,Sqlite,我有一个数据库表,它使用以下定义保存文件/文件夹结构: id parentid fileOrFolderName 111 222 aaa.txt 222 333 folderA 333 Root folderB 444 222 bbb.doc 根是预定义根文件夹的特殊Id。因此,上述记录的意思是:在Rootfolder\folderB\folderA\aaa.txt中有一个文件,其id

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

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

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

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

GetFileIdRootFolder\folderB\folderA\aaa.txt将返回111

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


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

对于这种数据结构,每个级别执行一次单独查找的明显算法是唯一有效的算法

对于目录层次结构中的每个级别,请执行以下操作:

从MyTable中选择id,其中parentid=?和fileOrFolderName=? 可以将所有查找合并到一个嵌套语句中:

从MyTable中选择id parentid在哪里= 从MyTable中选择id parentid在哪里= 从MyTable中选择id 其中parentid='Root' fileOrFolderName='folderB' fileOrFolderName='folderA' 和fileOrFolderName='aaa.txt' 然而,这不会更快,但会使查询构造更加复杂

要使其快速,请使用适当的索引。
parentid和fileOrFolderName两列上的索引应该会有所帮助。A在这两种语言上,id列可能会更好。

谢谢CL,对于每个级别的单独查找不是很清楚,您能给出一些伪代码吗?GetFileId函数是由Cor Java或任何其他语言编写的,sql语句在该函数内调用。请给我一些建议,谢谢。