我在MySQL中有一个表,我希望通过执行多个选择的select语句来并行查询 表中不重叠的等份,如:
1. select * from mytable where col between 1 and 1000
2. select * from mytable where col between 1001 and 2000
...
问题是我的案例中的col是varchar。在这种情况下如何拆分查询?
在Oracle中,我们可以将NTILE与rowid结合使用。但是在MySQL的情况下我没有找到类似的方法。
这就是为什么我的想法是散列col值并用我想要的相等部分的数量来修改它。
或者代替散列,可以使用动态生成的rownums。
考虑到表大(xxxM行)和我想避免全表,最佳解决方案是什么
扫描每个查询?
答案 0 :(得分:0)
您可以使用limit
进行分页,因此您将拥有:
1. select * from mytable limit 0, 1000
2. select * from mytable limit 1000, 1000
答案 1 :(得分:0)
你可以使用cast for varchar column to integer,就像这个cast(col as int)
一样此致 图莎尔
答案 2 :(得分:0)
如果没有扫描fulltable,它将产生结果
SELECT * FROM mytable
ORDER BY ID
OFFSET 0 ROWS
FETCH NEXT 100 ROWS ONLY