我有一个带有“困难”的表的mysql db和几条记录。如果我做“选择困难*”我让他们回来,他们补充说,通过主键ID排序顺序:Mysql:“select <fieldname> from”的结果顺序与“select * from”的结果顺序不同
mysql> select * from difficulties;
+----+-------+-----------+--------+----------+-----------+
| id | value | name | letter | low_band | high_band |
+----+-------+-----------+--------+----------+-----------+
| 1 | 1 | very_easy | VE | 1 | 1 |
| 2 | 2 | easy | E | 2 | 5 |
| 3 | 3 | medium | M | 6 | 10 |
| 4 | 4 | hard | H | 11 | 12 |
| 5 | 0 | na | NA | 0 | 0 |
+----+-------+-----------+--------+----------+-----------+
但是,如果我愿意“选择困难的名字:”我让他们回来不同的顺序:
mysql> select name from difficulties;
+-----------+
| name |
+-----------+
| easy |
| hard |
| medium |
| na |
| very_easy |
+-----------+
我的问题是:什么决定了这个顺序?有什么逻辑吗?它是否像“代表记录的文件发生在文件系统内的命令”或其他所有意图和目的是随机的?
感谢,最大
谢谢Piskvor,这一切都有道理。我知道关于顺序,我只是好奇在这种情况下发生了什么。我想我错误地认为按照记录出现在表中的顺序返回记录(或记录中的字段)对于dbms来说是最简单/最便宜的事情,因此它会做什么,但我有没有什么可以根据这个假设:)欢呼,最大 – 2010-07-29 16:32:06
@Max威廉姆斯:我猜想@ a1ex07是正确的那里与覆盖指数(即在'名称列'的索引)是XE?这会让“只读索引”成为请求“name”列时最便宜的操作,而不是在请求所有列时。见例如这个更长的解释:http://peter-zaitsev.livejournal.com/6949.html – Piskvor 2010-07-29 19:44:22