在Mysql5下使用Hash分区时排序的怪异现象
有一数据表,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
相关文章:
- SB的mysql!!! - 2005年09月13日 23:09
- 光棍节,我也来凑热闹,博客再次改版成功!!! - 2008年11月11日 11:45
- 开源数据库 Sharding 技术 - 2008年08月25日 13:52
- 闹心的7天淘宝购物退款经历 - 2008年08月03日 12:08
- Blog搬家了,呵呵。。。 - 2006年10月09日 22:54
- 最新使用mysql5的一点笔记 - 2005年08月30日 18:20
