Мне нужно найти большое количество значений в моей базе данных.
Ниже приведены данные, которые могут выглядеть:
0054321
54321
999
999 - HALLO?
54321 Hallo?
000054321
Поскольку это единовременно, я подумал, что просто сделаю действительно длинный запрос, просматривая данные, используя OR и LIKE:
... WHERE ' ' + FLD1 + ' ' LIKE '%54321 %'
OR ' ' + FLD1 + ' ' LIKE '%999 %'
OR ...
Вообразите это, но с 80k ИЛИ. В этом случае SQL Server столкнется со следующей проблемой:
Обработчику запросов не хватило внутренних ресурсов, и он не смог создать план запроса. Это редкое событие и ожидается только для чрезвычайно сложных запросов или запросов, которые ссылаются на очень большое количество таблиц или разделов. Пожалуйста, упростите запрос. Если вы считаете, что получили это сообщение по ошибке, обратитесь в службу поддержки клиентов для получения дополнительной информации.
В качестве обходного пути я прочитал, что вы должны объявить временный TABLE и поместить туда свои значения, а затем выполнить поиск с помощью 'IN' - но я должен искать с помощью LIKE, чтобы иметь возможность использовать подстановочные знаки ,
У кого-нибудь есть идеи, как решить или обойти эту проблему?
Я не хочу разбивать команду на несколько команд одним и тем же методом.
Спасибо за ваши предложения!