Исправлен ли порядок строк в таблице MYSQL, поэтому запросы всегда возвращают их в этом порядке? - PullRequest
1 голос
/ 11 августа 2009

У меня есть приложение, которое собирает данные в таблицу MySQL. В таблице нет столбца уникальных идентификаторов, поэтому я не могу ссылаться на конкретную строку по идентификатору.

Я хочу написать приложение дампа, которое каждый день сбрасывает новые строки, добавленные в таблицу, чтобы загрузить их в другое место. Я мог бы сделать это, добавив поле уникального идентификатора и сохранив последний сброшенный идентификатор, но я не хочу добавлять столбец идентификатора только для этого в таблицу.

Поэтому я решил сохранить число строк в таблице при каждом дампе и использовать это число в качестве смещения при следующем выводе таблицы (выберите * из предела таблицы очень большое смещение числа x). Конечно, это работает, только если есть гарантированные новые строки, всегда вставляемые в конец таблицы, поэтому все новые строки будут после смещения.

Полагаю, я могу положиться на это. Я прав?

Ответы [ 3 ]

4 голосов
/ 11 августа 2009

Нет, это не тот случай. База данных будет перемещать вещи для оптимизации и ускорения запросов. Вы должны будете добавить заказ по предложению к вашему запросу, чтобы обеспечить любой вид заказа. Вам определенно следует рассмотреть возможность добавления уникального идентификатора в вашу таблицу.

1 голос
/ 11 августа 2009

Подобно файловой системе, если таблица не оптимизирована или не дефрагментирована, удаленные данные освободят «слот», в который будут вставлены новые данные. Это не всегда добавляется в конец таблицы.

Допустим, у вас есть 3 строки: A, B, C

Если вы удалите B, то ваша таблица будет выглядеть как A, [свободное пространство], C

Итак, если вы вставите D в таблицу, она будет выглядеть так: A, D, C

Лучше всего использовать уникальный автоинкрементный ключ. Это также ускорит запросы.

1 голос
/ 11 августа 2009

Нет, нет. Нет никакой гарантии относительно порядка, в котором двигатель возвратит строки. В любом случае таблица без уникального идентификатора вообще не является идеей Годо. В этом случае у вас определенно есть достаточная причина для ее использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...