Нахождение одного из нескольких ключей в матрице - PullRequest
1 голос
/ 18 марта 2011

Вот мой набор чисел, с которым я ищу соответствие

(33, 15, 1) 

У меня может быть X количество массивов

это похоже на

(15, 1, 7)
(20, 5, 15)
(7, 2, 33) 
 ... 
 ...

Эта комбинация массивов, по сути, представляет собой матрицу, верно?

Эти числа имеют значение, , поэтому их не следует сортировать (это конкретные идентификаторы в базе данных)

В основном, решение должно сначала пройти по моему первому набору чисел по одному и посмотреть, если мы получим совпадение в первом столбце, если нет, перейти ко второму столбцу, если нет, проверить третий столбец,

так что будет 33 == 15 -> 33 == 20 -> 33 == 7 -> 33 == 1 -> 33 == 5 и т. Д., Пока мы не найдем совпадение, поэтому в этом случае мы сопоставим последний номер в последнем массиве, и это вернется.

если все это не удастся, мы переместимся ко второму числу из моего поискового набора (15) и начнем с начала матрицы и снова пройдемся по всему, пытаясь найти совпадение, и так далее.

Какое наиболее эффективное решение этой проблемы? Сначала я думал о рекурсии, но теперь я не уверен. Должен быть лучший способ, чем циклически повторять каждый набор данных снова и снова. Кажется, что простая итерационная процедура потребует много времени, в зависимости от размера наборов чисел.

[РЕДАКТИРОВАТЬ] -

Эта проблема сейчас именно этого размера, ограничена 3 столбцами

но теоретически количество строк может увеличиться до нескольких сотен, это действительно строки из базы данных, так как я добавляю больше информации, количество строк будет расти

1 Ответ

0 голосов
/ 17 октября 2011

В зависимости от того, из каких строк они поступают в базу данных и как они структурированы, индекс для этих столбцов и SQL-запрос для получения правильных строк должны быть быстрее, чем возвращать все 100 строк в клиент для обработки. Также зависит от того, насколько велика вся база данных по сравнению с патроном, который вас интересует. СУБД, как правило, очень хорошо справляются с этим и делают это с несколькими рабочими потоками, охватывающими всю таблицу, собирая для вас строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...