Используйте термины из текстового файла в предложении SQL WHERE ... IN - PullRequest
4 голосов
/ 23 марта 2010

Я выполняю SQL-запрос для сервера MySQL с

...
where name in ("term1","term2","term3")

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

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

Ответы [ 3 ]

2 голосов
/ 23 марта 2010

Я не очень знаком с MySQL, но вижу что-то вроде этого, где вы можете загрузить текстовый файл в таблицу, как вы предложили в своем вопросе: -

LOAD DATA INFILE 'file.txt'
  INTO TABLE t1
  (column1, column2, column3);

, а затем используйте соединения для получения данных.

Подробности здесь .

1 голос
/ 23 марта 2010

Обычно использование оператора WHERE ... IN становится очень медленным после нескольких сотен / тысяч терминов.

Кроме того, если таблица доступна только для чтения, вы не сможете добавлять индексы, чтобы сделать ее быстрее, поэтому, как сказал Астандер, я бы предложил временную таблицу с объединением.

0 голосов
/ 23 марта 2010

Я думаю, что вам лучше всего прочитать это в временную таблицу / таблицу, используемую специально для этого поиска .

Таким образом, вы можете индексировать таблицу и использовать внутреннее соединение / где в подзапросе .

...