gpt4 book ai didi

php - MySQL 加入速度慢。任何加速的方法

转载 作者:行者123 更新时间:2023-11-30 21:26:27 25 4
gpt4 key购买 nike

我有 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,
`url` varchar(50) 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 专家,但这些概念应该适用。

我会添加索引:

  1. 在 ListenTrack 上,添加一个带有 url 和 date_created 的索引
  2. 在音乐上,添加带有 url 的索引

这些索引应该可以极大地加快查询速度(我最初混淆了表名 - 在最新的编辑中得到了修复)。

关于php - MySQL 加入速度慢。任何加速的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58741780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com