Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Исключение 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо