Если я запускаю следующие запросы, каждый возвращается быстро (0,01 сек) и дает мне желаемый результат.
SELECT tagId FROM tag WHERE name='programming'
SELECT COUNT(DISTINCT workcode) FROM worktag WHERE tagId=123 OR tagId=124
(предположим, что два номера tagId были результатами первого запроса)
Я хотел бы объединить эти запросы, поэтому мне нужно выполнить его только один раз:
SELECT COUNT(DISTINCT workcode) FROM worktag WHERE tagId IN (SELECT tagId FROM tag WHERE name='programming')
Однако этот запрос завершается примерно за 1 мин 20 с. У меня есть индексы на worktag.workcode
, worktag.tagId
, tag.tagId
и tag.name
.
Если я запускаю DESCRIBE
для запросов, первые два используют индексы, а второй использует индекс для подзапроса (в таблице tag
), но не использует индексы в таблице worktag
.
Кто-нибудь знает, почему это может быть?
ПРИМЕЧАНИЕ. В таблице worktag
содержится более 18 миллионов записей.