Rails应用程序中mysql查询性能低下
我在mysql中为rails应用程序提供了三个表:Rails应用程序中mysql查询性能低下,mysql,sql,ruby-on-rails,performance,Mysql,Sql,Ruby On Rails,Performance,我在mysql中为rails应用程序提供了三个表: 故事(id、标题、摘要、热度)=>有217754条记录 标签(id、名称)=>有25123条记录 标记(故事id,标记id)=>有800751个 这是来自Rails的日志: 楼层荷载(14300.8ms) 这需要超过14秒。我相信故事、标签和标记中的所有索引都可以。 我必须说的另一件事是,炎热总是在变化 这是关于MySql的可伸缩性吗 附言: Explain result=>您可以简化查询,因为您没有使用标记中的任何内容表: SELECT
- 故事(id、标题、摘要、热度)=>有217754条记录
- 标签(id、名称)=>有25123条记录
- 标记(故事id,标记id)=>有800751个
Explain result=>您可以简化查询,因为您没有使用
标记中的任何内容
表:
SELECT s.*
FROM `stories` s INNER JOIN
`taggings` t
ON t.`story_id` = s
WHERE t.id = 3141
ORDER BY s.hotness
LIMIT 26 OFFSET 0;
如果这没用,这个有多大
SELECT count(*)
FROM `stories` s INNER JOIN
`taggings` t
ON t.`story_id` = s
WHERE t.id = 3141;
EXPLAIN对该查询的输出是什么?如果对查询执行SELECT count(*),是否会得到合理的结果?这与MySQL的可伸缩性无关。这要么是因为索引错误,要么是因为大量数据与特定标记匹配。请将您在表中的索引发布。@SCRATZ EXPLAIN输出添加到PS。SELECT count(*)有一个合理的结果,大约为0.3。解释表明您的索引是正确的,mysql不需要时间执行查询(集合中有3行(0.02秒))。在加载故事的Rails代码中似乎存在问题。我不知道Rails,但我在对象关系映射框架(如Hibernate)中看到过问题,在这些框架中,当加载对象时,对象的所有关系都会被加载。这可能是你的问题吗?@scraatz这与Rails无关,因为它也发生在mysql命令中
SELECT count(*)
FROM `stories` s INNER JOIN
`taggings` t
ON t.`story_id` = s
WHERE t.id = 3141;