Привет, ребята, так что один получил работу и, кажется, работает идеально почти мгновенно.Был в состоянии получить его благодаря помощи в комментариях!
Using sw As New StreamWriter("G:\USER\TESTRUN1.txt")
For Each word As String In result
i = 0
sql = "SELECT * FROM Test_Table WHERE DigNbr = @word"
dataadapter = New SqlDataAdapter(sql, con)
dataadapter.SelectCommand.Parameters.AddWithValue("@word", word)
dataset = New DataSet()
dataadapter.Fill(dataset, "Test_Table")
While i < dataset.Tables("Test_Table").Rows.Count
linePos = dataset.Tables("Test_Table").Rows(i).Item(4).ToString()
MyFilePath = dataset.Tables("Test_Table").Rows(i).Item(1).ToString()
i += 1
Using sr As New StreamReader(MyFilePath)
sr.BaseStream.Seek(4096 * (linePos - 1), SeekOrigin.Begin)
FoundWords.Add(sr.ReadLine)
For Each item As String In FoundWords
sw.WriteLine(item)
Next
FoundWords.Clear()
End Using
В основном для любого, кто читал, я использовал метод поиска, каждая строка составляет 4096 байт, поэтому, другими словами, новая строка начинается каждые 4097, так что с моей строкойУ меня есть номер, который указывает, на какой строке находится 13-значный номер, который я ищу, я просто умножаю его, чтобы поиск шел прямо к этому байту (строке) и получал строку.
например, скажем, номер, которым я был, находится в строке 10, 4096 * 10 - это 40960, где начинается строка 10.Как и в одном из комментариев, вместо поиска по строке 55 я в основном ищу позицию (55 * 4096).
Я довольно плохо объясняю, но надеюсь, что это кому-то поможет.