Следующий элемент в индексе

morya4ok

Новичок
Следующий элемент в индексе

Допустим есть таблица:

CREATE TABLE `objects` (
`ID` int(10) NOT NULL auto_increment,
`counter` int(10) NOT NULL default '0',
PRIMARY KEY (`ID`),
KEY `counter` (`counter`,`ID`)
) ENGINE=MyISAM;

Известен ID объекта, необходимо найти следующий и предыдущий объект в списке отсортированных по полю counter.
Получается, что нужен следующий и предыдущий элементы индекса, но как их достать?

Есть вариант строить запрос с учетом значение поля counter для известного объекта:

SELECT ID FROM objects WHERE counter >= N ORDER BY counter, ID LIMIT 1

где N значение counter объекта, для которого ищем следующий элемент.

Есть еще варианты? Очень хочется достать ID из индекса, что-то типа prev(), next()...
 

Dovg

Продвинутый новичок
в поиске точно есть
----
можно через union
 

morya4ok

Новичок
не понял, что значит есть в поиске?
где можно в документации посмотреть?
 

nail

Новичок
Re: Следующий элемент в индексе

Автор оригинала: morya4ok
Есть еще варианты? Очень хочется достать ID из индекса, что-то типа prev(), next()...
ну если уж так хочется:
HANDLER tbl_name READ index_name { = | >= | <= | < } (value1,value2,...)
[ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }
[ WHERE where_condition ] [LIMIT ... ]
http://dev.mysql.com/doc/refman/5.0/en/handler.html

Только тут недостаток: дергается не только индекс, а еще вся строка таблицы.
 

Avenus

Under Glory Yield
Как это понять?
Напиши, пожалуйста, для запроса куда писать handler
mysql_query ...
 

A-Lex[FM]

Web/Highload/DataScience
http://phpclub.ru/talk/showthread.php?s=&threadid=93437&highlight=%F1%EB%E5%E4%F3%FE%F9%E0%FF+%E7%E0%EF%E8%F1%FC
 
Сверху