我想从包含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数据类型的主键的表中有效地获取数据?
答案 0 :(得分:3)
因为您的主键必须是唯一的,所以相同的方法才有效。您可以将> =与字符列一起使用。
答案 1 :(得分:0)
我建议像这样使用偏移ORDER BY:
SELECT *
FROM t
ORDER BY ID
OFFSET 1000 ROWS FETCH NEXT 500 ROWS ONLY;
这种方式非常灵活。