каков порядок по умолчанию для простого SELECT в таблице MySQL со столбцом AUTO_INCREMENT

У меня есть таблица (mytable) со столбцом AUTO_INCREMENT (id_mt). Когда я делаю простой запрос, например

SELECT * FROM mytable;

Результат упорядочивается по столбцу AUTO_INCREMENT, как и в случае

SELECT * FROM mytable order by id_mt;

Итак, мой вопрос: каковы правила (если они есть) для порядка результатов, когда вы не используете «упорядочить по» И если у вас есть столбец AUTO_INCREMENT?

Чтобы было ясно для тех, кто ссылается на другие сообщения: я не использую

ALTER TABLE mytable ORDER BY sort_order ASC;

Понятно, что этот запрос просто меняет производительность при использовании запроса ORDER BY. Мой вопрос был больше: «Изменяет ли AUTO_INCREMENT (принуждает?) порядок простого SELECT?»


person philnext    schedule 14.04.2013    source источник
comment
Обычно это зависит от того, куда был записан файл.   -  person hjpotter92    schedule 14.04.2013
comment
@MarcinJuraszek Нет, это сообщение было о порядке по умолчанию с 'sort_order'   -  person philnext    schedule 14.04.2013


Ответы (1)


С сайта DBA Stack Exchange:

В мире SQL порядок не является неотъемлемым свойством набора данных. Таким образом, вы не получаете никаких гарантий от вашей СУБД, что ваши данные вернутся в определенном порядке — или даже в согласованном порядке — если только вы не запросите свои данные с предложением ORDER BY.

  • Итак, чтобы ответить на ваш вопрос, MySQL сортирует записи так, как хочет, без какой-либо гарантии согласованности.
  • Если вас просто интересует внутреннее устройство MySQL, Роландо дает интересный ответ.
  • Если, с другой стороны, вы собираетесь полагаться на этот порядок для чего-либо, вы должны указать желаемый порядок, используя ORDER BY. Делать что-либо еще — значит настраивать себя на неприятные сюрпризы.
person John Conde    schedule 14.04.2013
comment
Конечно, я знаю теорию: «всегда используйте ORDER BY, если хотите ORDER BY». Мне просто любопытно узнать о внутреннем порядке, в основном, когда у вас есть столбец AUTO_INCREMENT. - person philnext; 15.04.2013