Как я могу эффективно проверить, существуют ли записи с SQL-запросом? - PullRequest
0 голосов
/ 17 января 2012

Пользовательский сценарий выглядит следующим образом.

В моем приложении есть список компаний.Каждой компании присвоен уникальный номер (номер телефона).

Используя службу API от Google, приложение может выбирать компании, которые могли быть уже зарегистрированы в моем приложении или не зарегистрированы в моем приложении.

Поэтому из вызова API я хочу удалить компании, которые уже зарегистрированы, путем поиска номера телефона из моего приложения.Результат от вызова API будет меньше 20.

  1. Наименее вдумчивый способ - проверить, существует ли запись с номером телефона, перебирая результат API, что будет стоить O (n) SQL запросов.(Я не уверен, что это не имеет значения, если столбец номера телефона проиндексирован, а n меньше или равно 20)

  2. Используйте один запрос, который имеет n количество or сравнений, чтобы выбрать компании с любым номером телефона из результата API и «отфильтровать» их, выполнив итерацию по результату запроса.

DoВы думаете, что второй метод в конечном итоге должен будет сравнить O (n ^ 2) раз в худшем случае в процессе «фильтрации»?

Что было бы лучшим решением для решения этой проблемы?

Я использую Ruby on Rails 3 и ActiveRecord с MySQL.

1 Ответ

1 голос
/ 17 января 2012

Если вы используете field IN (n1, n2, n3) и field покрыты индексом - тогда вы получите O(lgN) сложность и M * O(lgN) в первом (практически M не имеет смысла, пока вы говорите, что будет толькобыть менее 20 элементов)

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