Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rails应用程序中mysql查询性能低下_Mysql_Sql_Ruby On Rails_Performance - Fatal编程技术网

Rails应用程序中mysql查询性能低下

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

我在mysql中为rails应用程序提供了三个表:

  • 故事(id、标题、摘要、热度)=>有217754条记录
  • 标签(id、名称)=>有25123条记录
  • 标记(故事id,标记id)=>有800751个
这是来自Rails的日志:

楼层荷载(14300.8ms)

这需要超过14秒。我相信故事、标签和标记中的所有索引都可以。 我必须说的另一件事是,炎热总是在变化

这是关于MySql的可伸缩性吗

附言:
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;