MySQL使用varchar列拆分表查询

时间:2015-07-07 06:19:39

标签: mysql sql

我在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行)和我想避免全表,最佳解决方案是什么 扫描每个查询?

3 个答案:

答案 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