Пользовательский доступ к source_slug (скажем, the_source_slug). Система пытается получить другие отдельные source_slugs, к которым ранее обращались другие пользователи (которые использовали the_source_slug), отсортированные по наиболее часто используемым и наименее часто используемым. По сути, система пытается найти пользователей с похожим интересом и показать другие страницы, к которым они обращались ранее.
Нужна помощь в оптимизации этого запроса:
SELECT DISTINCT(SOURCE_SLUG), COUNT(SOURCE_SLUG) CATCOUNT
FROM topsources
WHERE SOURCE_SLUG <> ?
AND USER_ID IN (SELECT DISTINCT(USER_ID)
FROM topsources WHERE SOURCE_SLUG = ?)
GROUP BY SOURCE_SLUG ORDER BY CATCOUNT DESC
Структура таблицы:
`topsources` (
`USER_ID` varchar(255) NOT NULL,
`DATE_AND_HOUR` varchar(255) NOT NULL,
`UPDATED_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`ITEM_ID` int(11) NOT NULL,
`SOURCE_SLUG` varchar(100) NOT NULL,
`FEED_PAGE_URL` varchar(255) NOT NULL,
`CATEGORY_SLUG` varchar(100) NOT NULL,
`REFERRER` varchar(2048) DEFAULT NULL,
PRIMARY KEY (`USER_ID`,`DATE_AND_HOUR`(30),`ITEM_ID`),
KEY `USER_ID` (`USER_ID`),
KEY `FEED_PAGE_URL` (`FEED_PAGE_URL`),
KEY `SOURCE_SLUG` (`SOURCE_SLUG`),
KEY `CATEGORY_SLUG` (`CATEGORY_SLUG`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;