определёном порядке и надо считать первую с конца запись, соответствующую определённым условиям, то как это сделать? READ TABLE ведь первую с начала запись возьмёт? А отсортировать таблицу в обратном порядке нет возможности, так как в ней нет подходящего поля для сортировки
луп
лупом перебрать все записи по условиям и каждый раз присваивать значение нужной записи? в итоге последним присвоится как раз первое с конца, да?
ссылку хранить на элемент. полученная ссылка всегда на последний укажет
Как-то странно, что в таблице нет поля для сортировки. А по каким полям и условиям фильтрация идёт?
Таблица получена из ФМ, который собирает в неё иерархию. Последняя запись - самый нижний уровень. Соответственно надо получить ближайшую к нижнему уровень по иерархию запись определённого типа, для, этого записи перебираются с конца
Может, тогда переложить в другую таблицу в обратном порядке, отсортировать по ключевому полю + STABLE и делать READ TABLE BINARY SEARCH?
Если "запись определённого типа" - это просто фильтр на равенство, то должно сработать.
я конечно мимо проходил, но почему люди думают что 1) "переложить в другую таблицу" и 2) "отсортировать" это бесплатные операции, а время теряется только при read table?
Зависит от задачи. Если таблица огромная и нужно часто к ней обращаться, то имеет смысл нормализовать в ней данные для быстрого доступа.
А если последняя запись всегда одна, то можно просто при перекладывании в новую таблицу оставить только последнюю запись и всё. Тут даже HASH таблицу можно использовать с уникальным ключом и будет быстрее работать при большой таблице.
Обсуждают сегодня