我們有一個相當大的磁盤陣列,其上有大約2-3百萬個XML文件。磁盤使用NTFS格式化,我們希望使用通配符搜索文件系統。所以像* SomePartOfTheFilename *就是一個典型的搜索查詢。在NTFS中搜索文件
我們使用.Net,並發現使用DirectoryInfo似乎很慢。
DirectoryInfo directoryInfo = new DirectoryInfo(directory);
List<FileInfo> fileInfos = directoryInfo.GetFiles(searchString, SearchOption.AllDirectories).ToList();
使用循環和遞歸也很慢。
是否有較低級別的API調用可用於直接搜索NTFS索引?
從命令行使用dir * SomePartOfTheFilename */s幾乎是即時的。有什麼可以利用的嗎?
cygwin中的_find_是否也能很快完成,還是與您的.net代碼速度相似?如果是這樣,那麼它可能是cmd.exe和預建索引之間的一些超級祕密MS集成。 – 2009-11-23 18:48:23
是否有任何特別的原因,你沒有建立一個外部索引,或者使用索引服務(如下所示)或一些家庭釀造解決方案?不僅是爲你搜索一個文件系統緩慢,而且你有機會放慢其他人正在做的工作,如果磁盤頭最終會圍繞試圖處理競爭請求而發生顛簸...... – 2009-11-24 08:22:43
我們希望依靠NTFS索引足夠快,我們可以創建我們自己的文件索引,但首先想要探索其他選項。 – Tim 2009-11-24 10:56:02