出于某种原因,当我按 DESC 对查询进行排序时,速度非常快,但如果按 ASC 排序,则速度非常慢。
这大约需要 150 毫秒:
SELECT posts.id
FROM posts USE INDEX (published)
WHERE posts.feed_id IN ( 4953,622,1,1852,4952,76,623,624,10 )
ORDER BY posts.published DESC
LIMIT 0, 50;
这大约需要 32 秒:
SELECT posts.id
FROM posts USE INDEX (published)
WHERE posts.feed_id IN ( 4953,622,1,1852,4952,76,623,624,10 )
ORDER BY posts.published ASC
LIMIT 0, 50;
两个查询的 EXPLAIN 相同。
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE posts index NULL published 5 NULL 50 Using where
我已将其追踪到“USE INDEX(已发布)”。如果我把它去掉,那么两种方式的表现都是一样的。但是 EXPLAIN 显示查询总体上效率较低。
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE posts range feed_id feed_id 4 \N 759 Using where; Using filesort
这是表格。
CREATE TABLE `posts` (
`id` int(20) NOT NULL AUTO_INCREMENT,
`feed_id` int(11) NOT NULL,
`post_url` varchar(255) NOT NULL,
`title` varchar(255) NOT NULL,
`content` blob,
`author` varchar(255) DEFAULT NULL,
`published` int(12) DEFAULT NULL,
`updated` datetime NOT NULL,
`created` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `post_url` (`post_url`,`feed_id`),
KEY `feed_id` (`feed_id`),
KEY `published` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=196530 DEFAULT CHARSET=latin1;
有解决办法吗?
最佳答案
你的索引是降序排列的,所以当你要求升序时,它需要做更多的工作才能把它恢复到那个顺序
关于MySQL ORDER BY DESC 很快,但 ASC 很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2886575/
在Ruby(或Rails)中,我们可以做到new_params=params.merge({:order=>'asc'})现在new_params是一个带有添加键:order的散列。但是是否有一行可以返回带有已删除key的散列?线路new_params=params.delete(:order)不会工作,因为delete方法返回值,仅此而已。我们必须分3步完成吗?tmp_params=paramstmp_params.delete(:order)returntmp_params有没有更好的方法?因为我想做一个new_params=(params[:order].blank?||para
有人知道为什么我的rails3.0.7cli这么慢吗?当我运行railss或railsg时,他大约需要5秒才能真正执行命令...有什么建议吗?谢谢 最佳答案 更新:我正在将我的建议从rrails切换到rails-sh,因为前者支持REPL,而rrails不是用例。此外,当与ruby环境结合使用时,修补似乎确实可以提高性能变量,现在反射(reflect)在答案中。一个可能的原因可能是这个performancebuginruby每当在ruby代码中使用“require”时,它就会调用一些代码(更多详细信息here)。在使用Rai
我有这段代码:date_counter=Time.mktime(2011,01,01,00,00,00,"+05:00")@weeks=Array.new(date_counter..Time.now).step(1.week)do|week|logger.debug"WEEK:"+week.inspect@weeks从技术上讲,代码有效,输出:SatJan0100:00:00-05002011SatJan0800:00:00-05002011SatJan1500:00:00-05002011etc.但是执行时间完全是垃圾!每周计算大约需要四秒钟。我在这段代码中是否遗漏了一些奇怪的低效
最近,当我运行vim来编辑ruby文件或rails项目时,它需要很长时间才能启动。但是在纯文本文件上调用时它启动速度很快。有什么方法可以找出哪些rubyvim插件最能延长启动时间? 最佳答案 如果您使用的是7.2.286或更新版本,您可以运行vim--startuptimevim.outfoo.rb记录启动过程的各个部分需要多长时间。 关于ruby-ruby插件会使启动vim很慢吗?,我们在StackOverflow上找到一个类似的问题: https:
关于Rails在开发模式下运行缓慢的类似帖子也有,但这些帖子中的解决方案都没有对我产生任何影响。我试过安装可以提高性能的gem并修改配置文件,但都没有成功。我刚开始使用Rails,所以我正在运行“Rails入门”指南中的启动应用程序,这是一个小博客。我已经按照推荐安装了Ruby1.9.3和Rails3.2.13。我在OS/X10.7.5上运行。当加载教程应用的起始页时,实际上只有1行文本和1个链接,需要20-40秒。对任何页面的每个后续请求都需要20-40秒。然而,当我查看服务器日志时,Rails所做的任何事情似乎都不会花费很长时间。日志中的事件之间的时间一直在占用。作为Rails的初
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭7年前。Improvethisquestion我喜欢RubyonRails,我将它用于我所有的Web开发项目。几年前,有很多人在谈论Rails是一个内存大户,以及它如何不能很好地扩展,但这些建议被GreggPollackhere搁置了。.不过最近,我听到有人说Ruby本身很慢。为什么Ruby被认为很慢?我不觉得Ruby很慢,但话又说回来,我只是用它来制作简单的CRUD应用程序和公司博客。在我发现Ruby变慢之前,我需要做什么样的项目?还是这种缓慢只是
我有一个函数平均需要250毫秒才能完成。我想在更短的时间内完成此操作,functionupdateDisplay(){varstart=newDate().getTime();var$this=$(this);vardata=$this.data('ansi');varhtml='';for(vari=0;i';}varcreate=newDate().getTime();console.log('Buildhtml:'+(create-start));$this.html(html);varend=newDate().getTime();console.log('Updatehtml
我有一个请求,让我的KendoUIGrid从一列开始排序,并且从那里只允许该列有排序的asc和排序的desc选项......这意味着没有未排序的选项。我的意思是当第一次查看页面时,有一个图标显示其按升序排列...如果单击列标题,则它会按降序排列,如果再次单击它会按升序排列。目前默认的Kendo行为是第三次单击将网格置于未排序模式,没有排序图标。如果有帮助,我的代码如下:$("#grid").kendoGrid({dataSource:{data:carList,schema:{model:{fields:{"Car":{type:"number"},"Miles":{type:"num
我正在测试将html元素动态添加到DOM的不同方法的速度。我构建了一个测试器here(代码是工作版本,非常草率)。对于不同的浏览器,结果(非常)不同,Chrome在速度方面获得了所有分数,而Opera位居第二-但这不是这里的问题。在Firefox中,我检测到清除div(从它的子节点)时出现问题。添加大约50.000个div元素时,需要很长时间才能清除,仅使用[div].innerHTML="";这是怎么回事?Firefox是否为此实现了一些内在的垃圾收集方法? 最佳答案 虽然我不确定innerHTML="",但您遗漏了一个可能使用D
我刚刚在我的Windows10机器上下载了VS152015Community,并安装了所有默认包。无论出于何种原因,如果我尝试打开一个javascript文件或几乎任何其他扩展,加载它大约需要15-20秒。这段代码在文本中只说了单词test。现在无论出于何种原因,如果我决定右键单击javascript文件并选择打开方式>“MicrosoftVisualStudio版本选择器”它不是使用普通的MicrosoftVisualStudio2015,而是立即打开,最多只需2-3秒...这是怎么回事?这太烦人了!我已经重新安装VS3次,清除了所有旧的垃圾文件,甚至尝试在没有安装单个工具或扩展的情