数据库是MySQL数据库表结构id - 整形 - 主键 (插入时已经是按顺序插入的,如 1 2 3 .. 10000000 ,插入后id就保持不变,不会被修改)
url - varchar - 唯一索引
....因为表很大,但是我需要按 id 的顺序读出并分析数据,所以写以下语句SELECT `id`, `url` ... FROM [table_name] ORDER BY `id`;加了 ORDER BY 语句后,数据量太大,发生异常。现在我想问的是,如果不加 ORDER BY `id` 会不会导致取出的数据是不按 `id` 的顺序排列的,比如会不会出现以下的情况:1 2 4 5 3 .... 10000000因为我看到有一个帖子说不加 ORDER BY 语句有可能会出现顺序不对的情况,谢谢。
url - varchar - 唯一索引
....因为表很大,但是我需要按 id 的顺序读出并分析数据,所以写以下语句SELECT `id`, `url` ... FROM [table_name] ORDER BY `id`;加了 ORDER BY 语句后,数据量太大,发生异常。现在我想问的是,如果不加 ORDER BY `id` 会不会导致取出的数据是不按 `id` 的顺序排列的,比如会不会出现以下的情况:1 2 4 5 3 .... 10000000因为我看到有一个帖子说不加 ORDER BY 语句有可能会出现顺序不对的情况,谢谢。
从理论上讲表中的记录是没有顺序的,所有不加 order by id 会出现这种问题,但要看你的表的存储引擎, 如果innodb则会按你的ID主键顺序,而myisam 则会以插入顺序。
1. 你的这个表的存储引擎是什么? (见 #3楼的说明)
2. 贴一下你的错误信息,可以直接从MYSQL操作命令界面上复制,或者到MYSQL的错误日志中获取。
select min(id),max(id) from table_name;
#每一次读固定数量的记录,如
SELECT `id`, `url` ... FROM [table_name] where `id`>=1 and `id`<10000;
#分析,再读取,再分析
SELECT `id`, `url` ... FROM [table_name] where `id`>=10000 and `id`<20000;