Поиск более 1 миллиона загруженных строк SQL с использованием бинарного дерева поиска - PullRequest
0 голосов
/ 27 мая 2018

Мое приложение написано на C # и загружает более 1 миллиона строк из базы данных.По какой-то причине я должен выполнить эту начальную загрузку, а затем я буду искать внутри загруженных строк вместо запросов к SQL, и каждый столбец содержит большие данные (около 500 символов в каждой строке), и каждый столбец имеет свой тип.Для поиска я должен проверить равенство данных из выбранной записи с 3 конкретными столбцами из других записей.

Я думаю, что с помощью Binary Search Tree можно сделать это быстро, потому что теперь это занимает минуты, используя вложенные циклы for (2 цикла).Если я смогу поместить данные в правильную структуру, создание HashCode из 3 столбцов создаст уникальные целочисленные данные и поместит их в BST.

Я не знаю, какая структура подходит для этой гипотезы.Главный вопрос: верна ли эта гипотеза?Или просто мечтал?

1 Ответ

0 голосов
/ 27 мая 2018

Индексирование данных в памяти - хорошая идея.Кажется, вы получаете доступ на основе равенства, например row.SomeKey == mySearchKey.Хэш-таблицы могут сделать это в O(1).Вставьте данные в Dictionary или используйте ToLookup.Производительность будет превосходной (порядка 10 миллионов обращений в секунду для одного ядра ЦП).

Если вам нужен доступ к диапазонам, для этого также есть класс инфраструктуры, который внутренне использует красное черное дерево.Это SortedSet/SortedDictionary.

...