У меня есть таблица (продукт) с 5.4 миллионами исправлений. Если я использую ниже запрос, чтобы получить результат, но он работает очень медленно. Существует ли более эффективный подход?Как быстро найти записи в большой таблице?
SELECT sd.imageid, sd.licencetype, sd.imgcollection, sd.orientation,
sd.pname, sd.pcaption, sd.ptype
FROM (SELECT imageid
FROM product
WHERE productkeyword IN (SELECT primary_kwd
FROM searchkwdmgmt
WHERE allkwd IN ('IPhone'))
GROUP BY imageid
HAVING Count(*) = 1
LIMIT 0, 31) q
JOIN searchdetails sd
ON sd.imageid = q.imageid
Можете ли вы перечислить индексы в таблицах в своем запросе? –
** Вам нужно показать нам определения таблиц и индексов **, а также подсчет строк для каждой из таблиц. Возможно, ваши таблицы плохо определены. Возможно, индексы создаются неправильно. Возможно, у вас нет указателя на тот столбец, который, как вы думали, вы делали. Не видя определения таблиц и индексов, мы не можем сказать. Нам также нужны подсчет строк, потому что это может сильно повлиять на оптимизацию запросов. Если вы знаете, как сделать «EXPLAIN» или получить план выполнения, поместите результаты в вопрос. –
Можете ли вы показать нам EXPLAIN обоих запросов select? –