MySQL-无法在子查询中检索超过300000行
所以。。我有一个查询,如下所示:MySQL-无法在子查询中检索超过300000行,mysql,database,Mysql,Database,所以。。我有一个查询,如下所示: SELECT t.* FROM (select * from sp2010 LIMIT 300000) t WHERE t.something = 1; 它的工作很好,但当我想要检索>300000行时,它只是被卡住了,我的MySQL服务器已经停止工作 发生了什么事?为了稍微优化内存使用,您可以执行以下操作: SELECT t.* FROM sp2010 t INNER JOIN ( SELECT id FROM sp2010 LIMIT
SELECT t.* FROM (select * from sp2010 LIMIT 300000) t WHERE t.something = 1;
它的工作很好,但当我想要检索>300000行时,它只是被卡住了,我的MySQL服务器已经停止工作
发生了什么事?为了稍微优化内存使用,您可以执行以下操作:
SELECT t.*
FROM sp2010 t
INNER JOIN (
SELECT id
FROM sp2010
LIMIT 500000) t2
ON t.id = t2.id
WHERE t.something = 1;
这样,当子查询时,您将获得更少的数据,而使用
JOIN
索引表对WHERE
使用内存中的临时数据集进行更快的筛选您的表中有多少列?提供您的表模式please@Alex我有3列,显示创建表sp2010代码>输出是!?你得到这些评论是因为有很多很多的可能性。你需要提供更多的细节。@Mozahler看起来我只需要在限制之前添加订单,而且它正在工作,但我不知道为什么。抱歉,这里没有问题。谢谢,这提高了我的性能,但我仍然无法检索到超过300000行,并且我不知道发生了什么,因为没有关于错误的通知:(您是否使用任何工具运行它?应该有错误消息。请提供您的表模式。我可以在MySQL命令行客户端上运行它。这是我的表模式:id_district int(3)DEFAULT NULL urban_rural int(1)DEFAULT NULL age int(2)默认为空。这只是一个有很多行的虚拟数据库。我没有任何PK,所有数据都是生成的。为什么id\u district
不是PK?如果我更改它,它可能会成为PK。