php – MySQL加入缓慢.任何加速的方法
发布时间:2020-12-13 22:42:25 所属栏目:PHP教程 来源:网络整理
导读:我有2张桌子. 1是音乐,2是listenTrack. listenTrack跟踪每首歌曲的独特播放.我试图获得本月流行歌曲的结果.我得到了我的结果,但他们只是花了太长时间.下面是我的表和查询 430,000行 CREATE TABLE `listentrack` ( `id` int(11) NOT NULL AUTO_INCREMENT,`ses
我有2张桌子. 1是音乐,2是listenTrack. listenTrack跟踪每首歌曲的独特播放.我试图获得本月流行歌曲的结果.我得到了我的结果,但他们只是花了太长时间.下面是我的表和查询
430,000行 CREATE TABLE `listentrack` ( `id` int(11) NOT NULL AUTO_INCREMENT,`sessionId` varchar(50) NOT NULL,`url` varchar(50) NOT NULL,`date_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,`ip` varchar(150) NOT NULL,`user_id` int(11) DEFAULT NULL,PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=731306 DEFAULT CHARSET=utf8 12500行 CREATE TABLE `music` ( `music_id` int(11) NOT NULL AUTO_INCREMENT,`user_id` int(11) NOT NULL,`title` varchar(50) DEFAULT NULL,`artist` varchar(50) DEFAULT NULL,`description` varchar(255) DEFAULT NULL,`genre` int(4) DEFAULT NULL,`file` varchar(255) NOT NULL,`allow_download` int(2) NOT NULL DEFAULT '1',`plays` bigint(20) NOT NULL,`downloads` bigint(20) NOT NULL,`faved` bigint(20) NOT NULL,`dateadded` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (`music_id`) ) ENGINE=MyISAM AUTO_INCREMENT=15146 DEFAULT CHARSET=utf8 SELECT COUNT(listenTrack.url) AS total,listenTrack.url FROM listenTrack LEFT JOIN music ON music.url = listenTrack.url WHERE DATEDIFF(DATE(date_created),'2009-08-15') = 0 GROUP BY listenTrack.url ORDER BY total DESC LIMIT 0,10 这个查询不是很复杂,行不是太大,我不这么认为. 有什么方法可以加快速度吗?或者你能提出更好的解决方案吗?这将是每个月开始的一个cron工作,但我也想做一天的结果. 哦,顺便说一句,我在本地运行,运行时间超过4分钟,但是在生产中它需要大约45秒
我更像是一个SQL Server人,但这些概念应该适用.
我要添加索引: >在ListenTrack上,使用url和date_created添加索引 这些索引应该极大地加快查询速度(我最初将表名混淆了 – 在最新的编辑中修复). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |