mysql 排序规约
mysql 排序规则
sid 是主键 order_no 是唯一索引
谁能帮我解释一下3次查询结果 为什么不一样, 在3个sql 的排序规则都是什么
------解决方案--------------------
没有加 order by 的话,查出来的就是物理顺序,如果没有做过删除操作,那么应该是这样的:
select sid,order_no,order_status from oms_order limit 10;
这个肯定优先使用 sid 排序,再使用 order_no 排序
select sid,order_status from oms_order limit 10;
sid 排序
select sid from oms_order limit 10;
这个只有 sid,只好使用它排序了,看上去 sid 是字符型的数据,所以 1171701 在 20 前。
------解决方案--------------------
没有ORDER则由MYSQL自行处理顺序,而这个顺序则和记录的物理顺序,索引的顺序相关。
sid 是主键 order_no 是唯一索引
谁能帮我解释一下3次查询结果 为什么不一样, 在3个sql 的排序规则都是什么
- SQL code
mysql> select sid,order_no,order_status from oms_order limit 10; +-----+----------------+--------------+ | sid | order_no | order_status | +-----+----------------+--------------+ | 20 | 20100319000003 | 0 | | 21 | 20100319000004 | 0 | | 63 | 20100319000046 | -1 | | 69 | 20100320000006 | 0 | | 76 | 20100323000001 | 0 | | 77 | 20100323000002 | 0 | | 78 | 20100323000003 | 0 | | 79 | 20100323000004 | 8 | | 86 | 20100324000007 | -1 | | 93 | 20100324000014 | -1 | +-----+----------------+--------------+ 10 rows in set (0.00 sec) mysql> select sid,order_status from oms_order limit 10; +-----+--------------+ | sid | order_status | +-----+--------------+ | 240 | -1 | | 261 | -1 | | 263 | -1 | | 285 | -1 | | 286 | -1 | | 288 | -1 | | 339 | -1 | | 383 | -1 | | 387 | -1 | | 452 | -1 | +-----+--------------+ 10 rows in set (0.00 sec) mysql> select sid from oms_order limit 10; +---------+ | sid | +---------+ | 1171641 | | 1171651 | | 1171661 | | 1171671 | | 1171681 | | 1171691 | | 1171701 | | 20 | | 21 | | 63 | +---------+ 10 rows in set (0.00 sec)
------解决方案--------------------
没有加 order by 的话,查出来的就是物理顺序,如果没有做过删除操作,那么应该是这样的:
select sid,order_no,order_status from oms_order limit 10;
这个肯定优先使用 sid 排序,再使用 order_no 排序
select sid,order_status from oms_order limit 10;
sid 排序
select sid from oms_order limit 10;
这个只有 sid,只好使用它排序了,看上去 sid 是字符型的数据,所以 1171701 在 20 前。
------解决方案--------------------
没有ORDER则由MYSQL自行处理顺序,而这个顺序则和记录的物理顺序,索引的顺序相关。