mysql 排序规则

gxg353 2012-08-17 05:12:33
sid 是主键 order_no 是唯一索引

谁能帮我解释一下3次查询结果 为什么不一样, 在3个sql 的排序规则都是什么

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)
...全文
364 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
aboutibm 2012-11-30
  • 打赏
  • 举报
回复
引用 6 楼 ACMAIN_CHM 的回复:
没有ORDER则由MYSQL自行处理顺序,而这个顺序则和记录的物理顺序,索引的顺序相关。
能说得详细点吗?
ACMAIN_CHM 2012-08-17
  • 打赏
  • 举报
回复
没有ORDER则由MYSQL自行处理顺序,而这个顺序则和记录的物理顺序,索引的顺序相关。
gxg353 2012-08-17
  • 打赏
  • 举报
回复
原因我知道了 谢谢各位

mysql> explain select sid,order_status from oms_order limit 10;
+----+-------------+-----------+-------+---------------+----------------------+---------+------+---------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------+-------+---------------+----------------------+---------+------+---------+-------------+
| 1 | SIMPLE | oms_order | index | NULL | IND_order_mem_status | 13 | NULL | 1139498 | Using index |
+----+-------------+-----------+-------+---------------+----------------------+---------+------+---------+-------------+
1 row in set (0.00 sec)

mysql>
mysql>
mysql> explain select sid,order_no,order_status from oms_order limit 10;
+----+-------------+-----------+------+---------------+------+---------+------+---------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------+------+---------------+------+---------+------+---------+-------+
| 1 | SIMPLE | oms_order | ALL | NULL | NULL | NULL | NULL | 1139498 | |
+----+-------------+-----------+------+---------------+------+---------+------+---------+-------+
1 row in set (0.00 sec)

mysql> explain select sid from oms_order limit 10;
+----+-------------+-----------+-------+---------------+--------------------+---------+------+---------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------+-------+---------------+--------------------+---------+------+---------+-------------+
| 1 | SIMPLE | oms_order | index | NULL | IND_ORDER_DELIVERY | 9 | NULL | 1139498 | Using index |
+----+-------------+-----------+-------+---------------+--------------------+---------+------+---------+-------------+
1 row in set (0.00 sec)
gxg353 2012-08-17
  • 打赏
  • 举报
回复
我的本意 就是取表里 物理存储的 前十个数据。 用order by 就不会出现我上面的问题了
gxg353 2012-08-17
  • 打赏
  • 举报
回复
第一句是 数据存储顺序
第二句 为什么和第一句结果不一样?
第三句 sid bigint(20) 但是下面的id 是今天用程序插入的 | 1171641 |
| 1171651 |
| 1171661 |
| 1171671 |
| 1171681 |
| 1171691 |
| 1171701 |
rucypli 2012-08-17
  • 打赏
  • 举报
回复
先不说内部机制怎么处理的

你这连order by都不用 limit个什么劲啊

取前十个 怎么取都不告诉数据库 让数据库猜吗
nicenight 2012-08-17
  • 打赏
  • 举报
回复
没有加 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 前。

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧