2013-04-03 2 views
0

Сегодня у меня возникло интересное поведение/проблема.
Каждый раз, когда я запускаю запрос в своей таблице, я получаю результаты, отсортированные по моему уникальному ключу, а не по моему первичному ключу.SELECT-запросы возвращают результаты в уникальном ключевом порядке

Мои столбцы таблицы:

id (PRIMARY KEY), 
name (UNIQUE KEY) 

Однако, если добавить еще один столбец нормальный он начинает вести себя нормально снова.
Может кто-нибудь объяснить это и/или дать мне подсказку, как отключить это?

+0

Um, используйте 'ORDER BY' в запросе? –

+0

Если вы не укажете заказ, порядок будет зависеть от используемых индексов. Вы не должны полагаться на упорядочение по умолчанию. –

+0

@dystroy Почему заказ вернется к нормальному, если я добавлю третий (например, VARCHAR) столбец без каких-либо индексов? – ArchSonix

ответ

3

MySQL, кажется, не имеют документации по этому вопросу само по себе, но я нашел это: http://forums.mysql.com/read.php?21,239471,239688#msg-239688

По существу, из не указать ORDER BY, вы не должны доверять данные, которые будут возвращены в какой-либо конкретной заказ. По умолчанию поведение сортировки также зависит от каждого движка.

Не зависит от заказа без ORDER BY.

0

Нет гарантий, что в этом порядке MySQL возвращает строку. Это зависит от версии MySQL, Storage Engine, версии Engine Engine. Пожалуйста, смотрите ссылку ниже для более подробной информации

Default Order of Records in MySQL