我有一个表foo
,其中有(其他20个)列bar
、baz
和quux
,以及baz
和quux
的索引。该表有大约500k行。
为什么以下to查询在速度上差异如此之大?查询A需要0.3秒,而查询B需要28秒。
查询A
select baz from foo
where bar = :bar
and quux = (select quux from foo where bar = :bar order by quux desc limit 1)
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY foo ref quuxIdx quuxIdx 9 const 2 "Using where"
2 SUBQUERY foo index NULL quuxIdx 9 NULL 1 "Using where"
select baz from foo
where bar = :bar
and quux = (select MAX(quux) from foo where bar = :bar)
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY foo ref quuxIdx quuxIdx 9 const 2 "Using where"
2 SUBQUERY foo ALL NULL NULL NULL NULL 448060 "Using where"
我使用MySQL5.1.34。
您应该在(bar,quux)
上添加索引。
没有这个索引,MySQL就无法看到如何高效地执行查询,因此它必须从各种低效的查询计划中进行选择。
在第一个示例中,它扫描quux
索引,对于找到的每一行,在原始表中查找bar
的相应值。这需要两倍的时间来检查每一行,但幸运的是,具有正确值bar
的行靠近扫描的开始,因此可以停止。这可能是因为您正在搜索的bar
值经常出现,所以幸运的几率非常高。因此,在找到匹配项之前,它可能只需要检查少数几行,因此,即使检查每一行所需的时间是原来的两倍,但仅检查几行的事实也会带来巨大的整体节省。由于在bar
上没有索引,MySQL事先不知道值:bar
频繁出现,因此它无法知道该查询会很快。
我发现 比 Python 2 和 3 中的函数慢。 Python 2 蟒蛇 3 为什么<code>max</code>(<code>O(n)</code>)比<code>sort</code>函数(<code<O(nlogn)</code>)慢?
自己试试这个: 更新:这是熊猫中的一个合法错误,可能是在2014年8月左右的0.15.1版本中引入的。解决方法:在使用旧版本的pandas时等待新版本的发布;从github获得最新的开发版本;在您发布的中手动执行单行修改;暂时使用而不是。 我有一个480万行的数据帧,使用(带有一个元素列表)选择一行需要489毫秒,几乎半秒,比相同的慢1800倍,比慢35000倍(将id作为值传递,而不是作为列表传
为什么在Python中比慢?难道不应该比快吗? 我试图学习模块。从基础开始,我尝试了这些: null 注意:我运行三次,取结果的平均值,然后将时间和代码一起张贴在这里。 这个问题与如何做微基准测试无关(我在这个例子中做了,但我也明白它太基础了),而是为什么检查一个‘真’变量比一个常量慢。
许多用户认为这是切换到 Pytorch 的原因,但我还没有找到牺牲最重要的实际质量、速度来换取急切执行的理由/解释。 下面是代码基准测试性能,TF1与TF2-TF1的运行速度从47%到276%不等。 我的问题是:在图形或硬件级别,是什么导致了如此显着的减速? 寻找详细的答案-我已经熟悉广泛的概念。相关Git 规格:CUDA 10.0.130、cuDNN 7.4.2、Python 3.7.4、Win
问题内容: 我正在研究大型矩阵乘法,并运行以下实验以形成基准测试: 从std normal(0平均值,1 stddev)随机生成两个4096x4096矩阵X,Y。 Z = X * Y Z的元素求和(以确保它们被访问)并输出。 这是朴素的C ++实现: 编译并运行: 这是Octave / matlab实现: 跑: 八度使用BLAS(我承担功能) 硬件是Linux x86-64上的i7 3930X,内
问题内容: 在这里,我编写了有关本地,成员,易失成员的访问速度的测试: 这是我的X220(I5 CPU)上的结果: 回合:1 空:5本地:10成员:312 VM会员:33378 回合:2 空:31本地:0成员:294 VM会员:33180 回合:3 空:0本地:0成员:306 VM会员:33085 回合:4 空:0本地:0成员:300 VM会员:33066 回合:5 空:0本地:0成员:303 V