我有一个需要吸收整个 MS SQL 数据库的系统。目前它这样做是这样的:
select top 1000 from table where id > 0 order by id;
然后,对于下一个块:
select top 1000 from table where id > 1000 order by id;
进而:
select top 1000 from table where id > 2000 order by id;
等等。
在 MySQL 中,我了解到做LIMIT
和OFFSET
查询非常慢,因为数据库必须首先对结果进行排序,然后扫描OFFSET
count。当该计数变大时,随着读取计数猛增,生活开始变得糟糕。
我的问题是:同样的问题是否适用于TOP
?换句话说,当我在一个有 10,000,000 条记录的数据库上运行这些查询时,我是否可以期待一个非常高的读取计数id > 9,999,000
?如果是这样,有什么方法可以更好地处理这个问题?