Cортируем ORDER BY `price`, но есть одинаковые цены в таблиц, из какого принципа сортируется строки

peon

Lok'tar ogar
Допустим, что cортируем выборку с помощью ORDER BY `price` DESC, и есть записи с одинаковыми значениями цены в таблице.
Я раньше предполагал, что, например, строки в таблице, содержащие одинаковые цены, будут сортироваться по возрастанию их ключа. Но из интереса поиграл с данными в мускуле, оказалось это не так.
Пока пришел к выводу, что сортируется по последующим полям в порядке возрастания, даже не обязательно включать их в выборку. Но есть предчувствие, что это ложный вывод.
Какой логике делается порядок выборки в таком случае?
Пытался сам выяснить, например тут http://dev.mysql.com/doc/refman/5.7/en/sorting-rows.html но там мой вопрос вовсе не раскрывается.
 

peon

Lok'tar ogar
Код:
SELECT *
FROM `example`
ORDER BY `example`.`a` ASC
LIMIT 0 , 30


Структура и данные.

Код:
CREATE TABLE IF NOT EXISTS `example` (
  `id` int(11) NOT NULL,
  `a` int(11) NOT NULL,
  `b` int(11) NOT NULL,
  `c` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `example` (`id`, `a`, `b`, `c`) VALUES
(1, 500, 64, 5),
(2, 750, 128, 14),
(3, 500, 64, 5),
(4, 600, 128, 14),
(5, 600, 128, 8),
(6, 750, 128, 20),
(7, 500, 32, 10),
(8, 450, 64, 8),
(9, 450, 32, 10),
(10, 500, 32, 10),
(11, 900, 128, 40),
(12, 800, 128, 20);
 

Vano

Новичок
Походу по порядку создания, типа по порядку места на диске. А если диск фрагментированый то можна считать беспорядочно?) Чисто мои домысли
 

Vano

Новичок
А нет если фрагментированый то до сраки, просто дольше читатся будет
 

peon

Lok'tar ogar

Redjik

Джедай-мастер
если индекс есть на сортируемое поле, то в порядке хранения в индексе будет, b-tree сбалансированное дерево, никак не завязанное на id
если в индексе нет, то будет fullscan и по идее порядок не поменяется
 
Сверху