如何从主表列数据类型为varchar的非常大的表中获取数据块

时间:2016-07-08 13:48:40

标签: sql-server sql-server-2012

我想从包含2800万行的表中检索数据。我想一次检索100万行。

我已检查过以下链接的答案 Get data from large table in chunks How can I get a specific chunk of results? 解决方案建议一个具有int ID列的查询。在我的情况下,我有主键列与varchar(15)作为数据类型

我想使用更快的东西 -     选择前2000名*     从T     其中ID> = @start_index     按ID排序

但由于ID列是varchar,我不能使用整数索引。

如何从具有varchar数据类型的主键的表中有效地获取数据?

2 个答案:

答案 0 :(得分:3)

因为您的主键必须是唯一的,所以相同的方法才有效。您可以将> =与字符列一起使用。

答案 1 :(得分:0)

我建议像这样使用偏移ORDER BY:

SELECT * 
FROM t
ORDER BY ID
OFFSET 1000 ROWS FETCH NEXT 500 ROWS ONLY;

这种方式非常灵活。