We have a fairly large disk array with roughly 2-3 million XML files on it. The disk is formatted with NTFS and we would like to search the filesystem using wildcards. So something like * SomePartOfTheFilename * would be a typical search query.
We are using .Net and are finding that using DirectoryInfo appears to be slow.
DirectoryInfo directoryInfo = new DirectoryInfo(directory);
List<FileInfo> fileInfos = directoryInfo.GetFiles(searchString, SearchOption.AllDirectories).ToList();
Using Loops and recursion is also very slow.
Is there a lower level API call we can use to directly search the NTFS index?
Using dir * SomePartOfTheFilename * /s from the command line is almost instant. Is there something there that can be leveraged?