В сообщениях вижу регулярно GetFirst FastFirstRow..., по смыслу вроде что-то интересное.
Попробовал - компилер незнает такой таблички .
Что это за такое ?
Кста, привет от старых штиблет
Что за FastFirstRow ?
Модераторы: m0p3e, edward_K, Модераторы
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
FastFirstRow используется для ускорения запросов к БД. Если не используется этот префикс, то по умолчанию БД кэширует все данные относительно используемого индекса и ждет GetNext. Очень часто необходимо получить данные заведомо только из одной записи, не перебирая остальные.
Пример использования:
Помимо этого, существуют ситуация когда необходимо проверить есть ли такая запись в БД или нет. Тогда используется RecordExists.
Пример:
Но используя RecordExists указатель записи не перемещается, а остается на текущей!
Пример использования:
Код: Выделить всё
if GetFirst FastFirstRow SpSopr
where ((Word(1) == SpSopr.RrMC and
cRec == SpSopr.cMCUsl)) = tsOK
{
Message('Цена товара ' + SpSopr.Price);
}
Пример:
Код: Выделить всё
if RecordExists SpSopr where ((KatSopr.nRec == SpSopr.cSopr)) <> tsOK
{
Message('К сожалению, нет ни одной спецификации в выбранной накладной', Error);
}
Проверил
Время формирования 00:03:56,07 - просто гетфирст
Время формирования 00:03:26,87 - GetFirst FastFirstRow
Время формирования 00:03:30,98 - снова GetFirst
Время формирования 00:03:14,61 - ещё раз FastFirstRow
Вывод - выигрыш есть, но кеши важней
Отчет реально запускаемый с меньшими периодами конечно по 10 раз на дню, getfirst просто заменил во всём отчете (их там 56) на макроопределение. все сканы _loop where.
упд, чтоб соблюсть так сказать чистоту эксперемента поставил счетчик, в этом тесте на эти самые вызовы -
17:16:40,44 Getfirst-вызовов 161253
Время формирования 00:03:56,07 - просто гетфирст
Время формирования 00:03:26,87 - GetFirst FastFirstRow
Время формирования 00:03:30,98 - снова GetFirst
Время формирования 00:03:14,61 - ещё раз FastFirstRow
Вывод - выигрыш есть, но кеши важней
Отчет реально запускаемый с меньшими периодами конечно по 10 раз на дню, getfirst просто заменил во всём отчете (их там 56) на макроопределение. все сканы _loop where.
упд, чтоб соблюсть так сказать чистоту эксперемента поставил счетчик, в этом тесте на эти самые вызовы -
17:16:40,44 Getfirst-вызовов 161253