Mysql 优化这个SQL!
用户访问源代码段塞(例如,源代码段塞)。系统尝试获取其他用户(使用过源代码的用户)先前访问过的其他不同源代码,按使用频率最高到使用频率最低排序。基本上,该系统试图找到有相似兴趣的用户,并显示他们之前访问过的其他页面 需要优化此查询的帮助:Mysql 优化这个SQL!,mysql,sql,Mysql,Sql,用户访问源代码段塞(例如,源代码段塞)。系统尝试获取其他用户(使用过源代码的用户)先前访问过的其他不同源代码,按使用频率最高到使用频率最低排序。基本上,该系统试图找到有相似兴趣的用户,并显示他们之前访问过的其他页面 需要优化此查询的帮助: SELECT DISTINCT(SOURCE_SLUG), COUNT(SOURCE_SLUG) CATCOUNT FROM topsources WHERE SOURCE_SLUG <> ? AND USER_ID IN (SE
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;