Как добавить через insert values в начало таблицы?
Есть sql код:
INSERT INTO messages (body, user_id, from_id, date) VALUES ('$body', $user_id, $uid , '$date')
Как сделать что бы добовлялось не в конец таблицы, а в начало?
В таблице в sql в принципе нет начала и конца. Есть большая куча строк.
А порядок в этой куче появляется только когда вы явно указываете order by. Без order by база может возвращать строки в любом порядке, в каком захочет.
Если для таблицы не указана сортировка по умолчанию, то сортирует по первичному индексу в asc направлении. А вот если индексов вообще нет, хз)) Но по логике по первому полю должно сортировать... тоже в asc. Не проверял никогда)
Это стандарт SQL. Если никакая сортировка не указана - база возвращает результат в любом удобном для себя порядке.
Innodb всегда кластеризован (расположен физически) в порядке первичного ключа. Поэтому seqscan и index scan по PK полностью совпадают. Не более чем допустимое стандартом влияние деталей реализации.
Если в innodb нет ни первичного ни уникального ключа - то таблица будет кластеризована по скрытому автоматически-созданному идентификатору. Для стороннего наблюдателя - порядка в ней не будет.
А тот же myisam - всегда бинарная куча, каждый апдейт может переместить запись в другое место всей таблицы, каждый insert попытается вставить запись на то место, где когда-то была удалённая delete запись..