MySQL: массовая отправка 20000 запросов SELECT от c# - PullRequest
0 голосов
/ 25 февраля 2020

Я должен сделать очень простой выбор, где только изменение параметра. Но я должен повторить это для огромного количества ключевых слов.

т.е.

SELECT url from mytable WHERE keyword like '%{key}%'

Я мог бы использовать

Select url from mytable where keyword in ('key1', 'key2'...) 

Но мне нужно знать, какие url связан с каждым ключевым словом . Кажется, MySQL не поддерживает table parameter, и выполнение одного и того же оператора 20К раз чрезвычайно медленное.

Какое решение подходит для этой задачи?

1 Ответ

1 голос
/ 25 февраля 2020
Select url, keyword from mytable where keyword in ('key1', 'key2'...) 

Таким образом, вы получаете как URL, так и соответствующее ему ключевое слово. Но не зная больше вашей таблицы, записей, дубликатов и т. Д. c. вы можете получить больше записей, чем вам нужно.

Что касается попытки go найти 20 тыс. ключевых слов, вы можете создать вторичную временную таблицу и применить к ней JOIN. Затем вы можете выполнить вставку ключевых слов ex: 100 за один раз, что будет быстрее (или выполнить какую-либо опцию массовой загрузки), и затем выполнить запрос с JOIN для этой временной таблицы.

Наконец, если возможно несколько строк, вы можете захотеть

Select 
      url, 
      keyword,
      count(*) timesFound
   from 
      mytable 
   where 
      keyword in ('key1', 'key2'...) 
   group by
      url, 
      keyword
...