Является ли MySQL `ORDER BY` отличным для мультимножеств? - PullRequest
3 голосов
/ 02 января 2012

Предполагая таблицу со столбцом, в котором хранятся целые числа.

-----------------------------
id    |  some_int  | some_other_value
-----------------------------
1        5           hello
2        9           how
3        987         are
4        5           you
5        9           thanks
6        1           for
7        5           answering. :-)

Отличается ли SELECT * FROM mytable ORDER BY some_int;?Смысл будет всегда возвращать строки в том же порядке, после каждого запроса?

Ответы [ 3 ]

2 голосов
/ 02 января 2012

Насколько мне известно, если в заказе по пункту есть дубликаты, то нет гарантии для порядка, в котором представлены дубликаты.

Если это проблема, вы можете изменить порядок, включив первичный ключ (идентификатор, который я предполагаю).

ORDER BY some_int, id

Поскольку id является первичным ключом, он также должен быть проиндексирован. Таким образом, разница в производительности будет минимальной.

1 голос
/ 02 января 2012

Используйте это:

SELECT * FROM mytable ORDER BY some_int,id;

Таким образом, он будет сортировать по «some_int», а затем с помощью «id» Дубликаты для «some_id» будут установлены в фиксированное положение с использованием столбца «id»

1 голос
/ 02 января 2012

Выполнение этого заказа не всегда должно давать вам один и тот же результат заказа.Нередко порядок будет другим, но не на 100% безопасно предполагать, что порядок всегда будет одинаковым, поскольку это не уникальное значение, по которому вы заказываете.Для этого вы также должны включить первичный ключ после первоначального заказа.

SELECT * FROM mytable ORDER BY some_int, id
...