有一数据表,ID字段,主键和自增量属性,同时做为Hash分区字段,使用InnoDB引擎。
SQL:SELECT * FROM tab WHERE userID = ? ORDER BY ID DESC
但返回的记录列表如下:
ID,title
124322,a111
124311,a222
5321,a333
15324,a444
15321,a55
1234,a66
由此可以看到返回的记录集并没有真正以ID排序,而之前没有使用分区,并使用MYISAM引擎的时候并没有这个情况,
由于使用主键字段作为分区字段,同时Mysql5在分区的时候并没有全局索引,只有每个分区单独的索引。所以估计这个SQL只是返回各自分区排序后的结果,然后做union就直接返回了。
最后改为:
SQL:SELECT * FROM tab WHERE userID = ? ORDER BY ID + 0 DESC

