У меня есть следующий SQL-запрос, который отлично работает, но очень медленно обрабатывается (от 3 до 5 секунд). Я создал индексы для столбцов «slug» и «checksum», но, поскольку предложение IN проходит через 5000–10000 строк, этого недостаточно, чтобы сделать его быстрым. Я читал, что есть способ улучшить его с помощью временных таблиц и/или объединений, но я не могу найти способ заставить его работать.
Механизм БД - InnoDB на MySQL. Любая помощь могла бы быть полезна.
SELECT name AS personName,
slug AS personSlug,
COUNT(slug) AS personCount
FROM person
WHERE checksum IN
( SELECT checksum
FROM person
WHERE slug = 'john-doe' )
AND NOT (slug = 'john-doe')
GROUP BY personName
ORDER BY personCount DESC
x <> y
был бы здесь немного более традиционен, чемNOT (x = y)
- person Michael Berkowski   schedule 09.06.2014