gpt4 book ai didi

mysql - 慢速 MySQL 查询的索引

转载 作者:太空宇宙 更新时间:2023-11-03 10:50:24 28 4
gpt4 key购买 nike

我有一张包含用户投票的大表。我尝试了几乎所有关于 INDEX 用法的教程和文章,但在失败之后……将字段作为键的所有可能组合,但查询仍然很慢。

我可以使用任何索引来加快速度吗?

(到目前为止,我不会向你展示我在 indizes 上的可耻尝试......)

CREATE TABLE IF NOT EXISTS `votes` (
`uid` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`objectId` bigint(15) NOT NULL,
`vote` tinyint(1) NOT NULL,
`created` datetime NOT NULL,
UNIQUE KEY `unique input` (`uid`,`objectId`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

该表有大约 130 万行,并将继续增长。这是我正在尝试的查询:

EXPLAIN SELECT objectId, COUNT(uid) AS voteCount, AVG(vote) AS rating
FROM votes
GROUP BY objectId

有什么建议吗?

最佳答案

我可以建议的唯一方法如下,尽管我不知道它是否会提高性能。它假定您有一个 Objects 表,每个 ObjectId 一行:

SELECT ObjectId,
(select count(*) from votes v where v.objectid = o.objectid) as votecount,
(select avg(vote) from votes v where v.objectid = o.objectid) as rating
FROM objects o;

然后您需要以下索引:votes(objectid, vote)

这将用索引扫描替换外部 group by,这可能会加快查询速度。

关于mysql - 慢速 MySQL 查询的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25663068/

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