MySQL SQL получает самые последние записи в таблице? - PullRequest
3 голосов
/ 17 января 2010

У меня есть SQL-оператор, как показано ниже, пытающийся получить самые последние записи в таблице. У меня два вопроса:

  1. Лучше ли заказывать по идентификатору или по дате?

  2. Как переписать этот оператор SQL для переупорядочения по дате?

    SELECT id, comment, DATE_FORMAT(entry_date, '%W %H:%i') FROM comments ORDER BY id DESC LIMIT 10
    

Ответы [ 2 ]

5 голосов
/ 17 января 2010

Это зависит от того, что вы подразумеваете под самым последним:

Если вы имеете в виду самую последнюю созданную запись, то (в большинстве случаев) под идентификатором первичного ключа будет работать.

Если вы имеете в виду самую последнюю обновленную запись, то определенно по дате.

Для сортировки по дате просто измените имя поля: ORDER BY entry_date DESC

0 голосов
/ 17 января 2010

Если вы хотите быть на 100% точными для сортировки по самым новым строкам, вы должны использовать поле даты. Сортировка по полю времени, когда вы хотите отсортировать по новинкам, имеет большой смысл, и при индексации сортировка по датам займет то же время, что и сортировка по идентификаторам.

Значения для поля id гарантированно являются уникальными, я полагаю, возможно, нет способа гарантировать, что они упорядочены по времени вставки. Например, поле id может быть циклическим (6,7,8, -7, -6 ...), или более поздняя модификация таблицы может изменять поля id, но не будет знать, чтобы сохранить их упорядочение время вставки или параллельные транзакции могут принять решение о вставке новых строк в другом порядке в поля идентификатора и даты.

...