|
|
|
| Мне хотелось бы узнать, почему в таблице нарушается порядок записей. Допустим, id - PRIMARY KEY, auto_increment.
В часто используемых таблицах при обыкновенном запросе
Может выдать записи в довольно странном порядке - id не возврастает, не уменьшается. Никакой закономерности. Приходится составлять запрос с сортировкой:
SELECT * FROM `tbl` ORDER BY `id` ASC;
|
Если в таблице более 100000 записей, то такой запрос выполняется около секунды (без сортировки раз в 5 быстрее).
С чем это связано? | |
|
|
|
|
|
|
|
для: Unkind
(10.03.2007 в 16:43)
| | Записи не хранятся в таблице по порядку, порядок следует задавать при помощи конструкции ORDER BY. Физически записи могут располагаться в произвольно порядке - это связано с особенностью работы операторов UPDATE, DELETE и INSERT, стремящихся уменьшить дефрагментацию.
Вы можете физически отсортировать таблицу при помощи запроса
ALTER TABLE tbl ORDER BY id
|
но порядок сортировки запросто может нарушиться.
PS Это не только особенность СУБД MySQL - такое поведение характерно для всех СУБД. | |
|
|
|
|
|
|
|
для: cheops
(10.03.2007 в 17:03)
| | >стремящихся уменьшить дефрагментацию
То есть стремятся увеличить фрагментацию?:) | |
|
|
|
|
|
|
|
для: cheops
(10.03.2007 в 17:03)
| | Спасибо, не знал про сортировку по умолчанию. | |
|
|
|