выбрать из MySql базы данные с последним ID?

Corvin

Новичок
выбрать из MySql базы данные с последним ID?

выбрать из MySql базы данные с последним ID?
 

si

Administrator
Думаю быстрее сделать 2 запроса если таблица большая:

SELECT max(id) FROM ...
SELECT * FROM .. WHERE id=$maxid
 

ForJest

- свежая кровь
Точна. Надо сделать тесты. Наконец-то навсегда определиться с тем что использовать - max или limit.
 

si

Administrator
Надо сделать тесты
Не надо их делать, тут все понятно и так. Для лимита, сервер возмет ВСЕ строки, отсортирует их в обратном направлении и вернет одну, вот и подумай как это сортировать скажем 1000000 строк :)
 

EkyT

Guest
Хм....
SELECT * FROM table ORDER BY id DESC LIMIT 1;
1 row in set (0.01 sec)

SELECT max(id) FROM table;
1 row in set (0.02 sec)
SELECT * FROM table WHERE id=11334059;
1 row in set (0.00 sec)

mysql> SELECT count(id) FROM table;
+-----------+
| count(id) |
+-----------+
| 11334059 |
+-----------+
1 row in set (0.00 sec)
 

.des.

Поставил пиво кому надо ;-)
Ну это отнюдь не доказательство... имхо надо сделать по 100 запросов (mysql_unbuffered_query)
чтобы чего то действительно показать.
и еще в таблице действительно 11 миллионов записей?
 

EkyT

Guest
Могу только предположить.
В данном случае id primary key, он хранится в отсортированном виде.

поэтому открыть индексный файл и сделав seek_end прочесть один бигинт (да хоть 10, в этом случае seek_end - 10 * sizeof(id)) получается достаточно быстро.

даже вот такой запрос
SELECT * FROM table ORDER BY id DESC LIMIT 100000,10;
выполняется за 10 rows in set (0.39 sec)
 

EkyT

Guest
explain хорошо объясняет когда в запросе 2 и более таблиц. в запросе с одной таблицей можно только увидеть что индекс используется или же нет
 
Сверху