У меня есть база данных SQLite и я хочу получить последнюю запись.
Я знаю о ORDER BY column DESC LIMIT 1
. Однако причина, по которой это не достаточно хорошо, заключается в том, что в этой базе данных A) нет индексов, и я не хочу их создавать, и первичный ключ тоже не достаточно велик, подумайте о строках порядка 1 млрд.
CREATE TABLE my_table (
col1 TEXT,
col2 float,
)
Теперь строки находятся на физическом диске в том же порядке, в котором они были вставлены, поэтому получение последней должно быть тривиальным. Я полагаю, что этот порядок в MySQL будет соответствовать первичному ключу, который всегда должен присутствовать в MySQL, поэтому я мог бы использовать решение ORDER BY primary_key DESC LIMIT 1
. Но здесь я не знаю, что делать, потому что, насколько я могу судить, первичного ключа, соответствующего порядку диска, нет.
Я выполнил SELECT COUNT(*) FROM my_table;
(для выполнения которого требуется 15 минут), и поэтому я знаю точное количество строк в таблице, назовем его N. Если бы у меня был AUTOINCREMENT PRIMARY KEY
, я мог бы сделать WHERE primary_key > N-1
, но опять же, это, кажется, отсутствует.