Mysql Вставить данные в таблицу есть вопрос об аранжировке? - PullRequest
4 голосов
/ 25 ноября 2010

Я обнаружил странную проблему с моей БД MySQL.

иногда, когда я вставляю в него новые данные, порядок их размещения подобен стеку, например

4 (новейшая версия)

3

2

1 (самый старый) ...

как я могу сделать так, чтобы это устроилось?

1 (новейший)

2

3

4 (самый старый)

спасибо всем.

Ответы [ 2 ]

2 голосов
/ 25 ноября 2010
SELECT *
FROM TABLE
ORDER BY ID

Вы должны помнить, что при просмотре / выборе данных из таблицы без указания ORDER BY не выполняется какой-либо конкретный заказ .

То, как вы просматриваете данные (неупорядоченные), может быть связано с любым из множества фактов (механизм базы данных, схема, хранилище страниц, фрагментация страницы, индексы, первичные ключи или просто оптимизация плана выполнения).

1 голос
/ 25 ноября 2010

В стандартах SQL конкретно указано, что таблицы не имеют «естественного» порядка.Поэтому ядро ​​базы данных может свободно возвращать запрос без ORDER BY в любом порядке, в котором он хочет.Порядок может меняться от одного запроса к другому, потому что большинство движков предпочитают возвращать данные в любом порядке, в котором они могут получить их вам быстрее.В конкретном порядке вы должны включить столбец в вашей таблице, чья работа заключается в том, чтобы прокси для порядка, в котором вы добавили записи в таблицу.Два распространенных способа сделать это - использовать поле автоинкремента, которое будет в числовом порядке от самой старой к самой новой записи, и столбец TIMESTAMP, который выполняет именно то, что говорит.Если у вас есть такой столбец, вы можете использовать ORDER BY ColumnName при поиске, чтобы получить упорядоченный набор результатов.

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