У меня есть 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, и, следовательно, что бы она сделала, но у меня есть ничто не основывает это предположение на :) cheers, max –
@Max Williams: Я бы предположил, что @ a1ex07 верен там с индексом покрытия (т. е. индексом в столбце 'name') - xe? Это заставило бы «просто прочитать, что индекс имеет» самую дешевую операцию при запросе только столбца «name», но не при запросе всех столбцов. См. это для более подробного объяснения: http://peter-zaitsev.livejournal.com/6949.html – Piskvor