Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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
MySQL-无法在子查询中检索超过300000行_Mysql_Database - Fatal编程技术网

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。