Разницей в производительности, конечно, в этих 2-ух случаях: id и сортировка, можно принебречь.
Варианты с использованием ID - auto_increment мне не нравятся с точки зрения постоянного, гипотетичесски бесконечно-неконтролируемого увеличения ID. Если предположить, что в лог файл каждый день заносится около 100`000 записей, старые удаляются, то к концу года ID достигнет 36`500`000. И далее будет постоянно увеличиваться. error - smalint(3) - номер ошибки 2 байта, info - int(10) - закодированный IP 4 байта, dataerr - 8 байт, а id - int(10) - 4 байта (с таким расходом хватит более чем на 100 лет) занимает около 1/3 места всей таблицы, хотя и является вспомогательным столбцом... Возможно сделать id mediumint(8) - 3 байта, только в этом случае необходимо проверять, не превышен ли лимит в 16`777`215, но это приведет к доп. затратам времени разработки и усложнению процесса логирования в целом, что есть плохо, да и примущество в 1 байт таковым назвать очень затруднительно.
Связку ID - autoincrement необходимо использовать там, где это действительно необходимо и она, эта связка, несет за собой очевидные преимущества.
С учетом того, что в варианте с использованием сортировки нет высшеперчисленных нюансов, считаю его наиболее приемлимым к данной ситуации.
-~{}~ 23.12.05 01:10:
P.S.
white phoenix, твой вариант с использованием сортировки, лучше, чем тот что я предложил, согласен. Вот только его не мешалобы немного "доделать":
1.
PHP:
$n < 1 ? $n = 0 : $result = mysql_query($sql);
Иначе MySQL ругается на отрицательное значение LIMIT (mysql_error())/
2. Блокировка таблиц.
-~{}~ 23.12.05 01:27:
Да, поразмыслив, решил дату хранить не в datatime столбце, а в timestamp.