我真的可以使用一些帮助来优化我网站上用于显示排名的表格。我已经阅读了很多关于如何优化查询以及如何正确使用索引的内容,但即使在实施了我认为可行的更改之后,也几乎看不到任何改进。我的快速解决方案是仅使用前 100,000 名排名(每天更新并存储在不同的表中)来提高现在的速度,但我真的不喜欢这个选项。
所以我有一个表来存储用户的信息,如下所示:
表“缓存”:
id (Primary key)
name
region
country
score
还有其他关于用户的变量被存储,但我认为它们在这里不相关,因为它们没有在排名中使用。
用户可以查看 3 个基本排名页面:
世界观:
SELECT cache name,region,country,score FROM cache ORDER BY score DESC LIMIT 0,26
区域视图:
SELECT name,region,country,score FROM cache WHERE region='Europe' ORDER BY score DESC LIMIT 0,26
和国家观点:
SELECT name,region,country,score FROM cache WHERE region='Europe' AND country='Germany' ORDER BY score DESC LIMIT 0,26
我已经尝试了几乎所有我能想到的索引组合来帮助减轻数据库的工作,虽然有些似乎有一点帮助,但我找不到一个只会为地区和国家查询返回 26 行的索引组合(使用只是一个关于“分数”的指数,世界排名正在飞速发展)。
我觉得我可能缺少一些基本的东西,任何帮助将不胜感激!
一点额外信息:缓存表目前大约 920 兆字节,总行数略多于 800,000 行。如果您可以使用更多信息,请告诉我。