我可以在查询完成之前强制MySQL输出结果吗?

我可以在查询完成之前强制MySQL输出结果吗?,mysql,select,Mysql,Select,我有一个很大的MySQL表(大约7.5亿行),我只想提取几列 SELECT id, delid FROM tbl_name; 没有联接或选择条件或任何内容。两个字段上都有一个索引(分别) 原则上,它可以立即开始读取表格并吐出值,但实际上整个系统只是消耗内存,基本上会停止运行 似乎整个查询都在执行中,并且输出存储在生成任何输出之前的某个位置 我搜索过解除缓冲、关闭缓存等,但就是找不到答案 (mysqldump几乎就是我想要的,只是它转储了整个表-但至少它立即开始生成输出)我唯一能想到的就是手动执

我有一个很大的MySQL表(大约7.5亿行),我只想提取几列

SELECT id, delid FROM tbl_name;
没有联接或选择条件或任何内容。两个字段上都有一个索引(分别)

原则上,它可以立即开始读取表格并吐出值,但实际上整个系统只是消耗内存,基本上会停止运行

似乎整个查询都在执行中,并且输出存储在生成任何输出之前的某个位置

我搜索过解除缓冲、关闭缓存等,但就是找不到答案


(mysqldump几乎就是我想要的,只是它转储了整个表-但至少它立即开始生成输出)

我唯一能想到的就是手动执行此操作,但有一定的限制。我不知道你的速度总共会提高多少,但至少你的结果集会更小。另一方面,您将不得不处理多个查询,这可能会导致这是一个糟糕的解决方案

您可以使用,但在运行时不能“潜入”其他查询,我不知道这是否是您案例中的解决方案

您看过和吗

我认为以下内容与您想要做的很接近:

select id,delid 
  into outfile 'C:\\ronnis.csv'
       fields terminated by ','
  from tbl_name;

<perform unix sort>

load data infile 'C:\\ronnis.csv' 
into table new_tbl_name
fields terminated by ',';
选择id,delid
输入输出文件“C:\\ronnis.csv”
以“,”结尾的字段
来自tbl_名称;
加载数据填充'C:\\ronnis.csv'
进入表格新名称
以“,”结尾的字段;

对于7.5亿行2列,您打算做什么?这些列中存储了什么?它们是什么存储类型?您的db服务器有多少ram?处理代码使用多少ram/什么语言编写?删除重复项(使用UNIX排序)并将其放回另一个表中。服务器只有4Gb RAM,但我不明白为什么它需要RAM,除非有一些要求,即在发出之前必须存储整个输出。我是此数据集的唯一用户,因此无法访问数据库没有问题。但是“unbuffered_query”是一个PHP而不是MySQL语句。它是,它是,但最终您使用一个“客户端”连接到您的数据库,PHP-as-a-client支持这种返回结果集的方式。但这只是一个想法。万岁。。。。这就完成了工作(尽管我必须为服务器创建一个可写入的世界目录)。未缓冲的输出立即显示在指定的文件中。。