![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Исключение MAX() [D5, IB6.x]
rava © (2003-09-15 16:49:00)
Есть SP, в нем:
Select Max(KOD) From Saldo
Where saldo.NCH = :iNch And saldo.DPLT <= :iDPlt
Order By KOD Desc
Into :MaxKey;
Как в запросе получить значение первой записи, т.е. я хочу
исключить использования функции MAX(), т.к. первая запись и есть
максимальная значение которая мне нужна. Спасибо всем.
Sandman25 (2003-09-15 17:55:00) [1]
Даже если нет индекса, то select max не может выполняться медленнее, чем select order by.
Вот если Вы сравнивали select max с простым select ( безorder by), тогда, конечно, может и медленнее.
Johnmen (2003-09-15 17:51:00) [2]
>Rava © (15.09.03 17:47)
По идее MAX() должен отрабатывать практически мгновенно, если по полю KOD есть индекс.
Rava (2003-09-15 17:47:00) [3]
Johnmenu - спасибо за простое решение проблемы.
VOPROS - как использовать first, никогда непользовалься.
Sandman25 - По моим экспериментам MAX() выполняется дольше при увеличении кол-во записей в таблице SALDO.
Johnmen (2003-09-15 17:46:00) [4]
>Sandman25 © (15.09.03 17:20)
"Вот ымэнно, вот ымэнно !" (c) Хрюн Моржов
:)))
Sandman25 (2003-09-15 17:20:00) [5]
А вообще зачем избавляться от MAX? Без него любая конструкция будет выполняться дольше. Сортировка - дорогая операция.
vopros (2003-09-15 17:16:00) [6]
first-наверное поможет
Johnmen (2003-09-15 17:12:00) [7]
FOR
Select KOD From Saldo
Where saldo.NCH = :iNch And saldo.DPLT <= :iDPlt
Order By KOD Desc
Into :MaxKey
DO BEGIN;
SUSPEND; EXIT;
END