Стоит ли использовать сортировку по id вместо даты?
Есть индексированное int поле "date", куда записывается time(). Является ли хорошей практикой использовать вместо этого id? Просто подумал, что по уникальному id будет быстрее сортировка, да и time может быть одинаковым. Просто, если логически подумать, раз id больше, значит, запись была произведена позже. В ином случае, значит, есть ошибка в базе данных. К тому же, если я не собираюсь показывать дату, то поле "date" можно даже убрать.
1. На скорость это повлияет так:
Без индекса по полю "date" выборка будет, естественно, более ресурсоёмкой. Но если добавить индекс только для этой задачи, то более ресурсоёмкой станет запись (перестраивать придётся оба индекса, а не один индекс по id).
2. В общем случае, порядок записи в БД и порядок возникновения события - это не одно и то же, но
- разница обычно не превышает долей секунд
- если вы используете time() MySQL-ную, эта разница становится вообще бессмысленной
Если у вас PHP и MySQL будут крутиться на разных машинах, и тем более, если эти машины будут достаточно разнесены (на разных континентах, например), и если разница time между двумя записями критична до секунды или меньше, то о правильном использовании time нужно задуматься, и намного глубже, чем в вашем вопросе.
В остальных случаях не парьтесь и считайте порядок id порядком записей, даже если произойдёт какая-то коллизия с time, это ни на что не повлияет.