![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хочу быструю сортировку [D7, Firebird]
Punch © (2005-12-26 16:07:00)Все выборки из БД идут через ХП. В гриде делаеть сортировка по любому полю. Соответсвенно получается что-типа
select * from MY_PROCEDURE
order by filed1, field2...
план строится не по индексам, предложите, что-нить плз
evvcom (2005-12-26 17:19:00) [1]
> короч, смысл оптимизировать
Я так понимаю смысл не оптимизировать, а все-таки выполнить запрос и сортировку, выбранную пользователем, на сервере, при этом не писать много лишнего кода. Действительно это можно сделать с помощью DSQL, не знаю только есть ли он на птице. Наверное, есть.
Johnmen (2005-12-26 17:12:00) [2]Так и говорим: ТЕБЕ помочь не можем.
Punch (2005-12-26 16:57:00) [3]Удалено модератором
Примечание: Так и говорим
Johnmen (2005-12-26 16:48:00) [4]>Punch
Тебе уже сказали, что ты ищешь черную кошку в темной комнате. Притом, что её там нет.
Что не понятно?
Punch (2005-12-26 16:45:00) [5]where - оптимизирован на все 100 %
что щас сделано
написано 3 ХП
- MY_PROCEDURE_ORDER_DEFAULT
- MY_PROCEDURE_ORDER_NUMBER
- MY_PROCEDURE_ORDER_NAME
у MY_PROCEDURE есть вх парам - SORTING
если SORTING = 0 то выполняю MY_PROCEDURE_ORDER_DEFAULT(без сорт) по индексу ID
если 1 - то MY_PROCEDURE_ORDER_NUMBER (по коду) по индексу NUMBER
если 2 - то MY_PROCEDURE_ORDER_NAME (по имени) по индексу NAME
если сортировка по номеру или по имени или без сортировки - то запускаю
одну из трех ХП - все быстро
но есть поля в сетке и другие, так вот они идут по
select * from MY_PROCEDURE
order by filed1, field2...
Sergey13 (2005-12-26 16:35:00) [6]2[5] Punch (26.12.05 16:31)
>короч, смысл оптимизировать
А как оптимизировать то? Ну перепиши ORDER BY на filed2, field1... в программе? Может лучше Where оптимизировать для исключения "объем данных - велик, фетч - долго."
Desdechado (2005-12-26 16:34:00) [7]чтобы рыбку съесть, надо в воду лезть
Punch (2005-12-26 16:31:00) [8]короч, смысл оптимизировать
select * from MY_PROCEDURE
order by filed1, field2...
Работал ли кто-нить с DSQL может с его помощью можно.
Vlad (2005-12-26 16:24:00) [9]
> Punch (26.12.05 16:15) [2]
> надо серверную сортировку.
Серверная сортировка без индексов будет медленной, как ни крути...
Sergey13 (2005-12-26 16:19:00) [10]2 [2] Punch (26.12.05 16:15)
ИМХО - ты странного хочешь.
Punch (2005-12-26 16:15:00) [11]не пойдет объем данных - велик, фетч - долго.
надо серверную сортировку.
Desdechado (2005-12-26 16:13:00) [12]делать сортировку на клиенте в ClientDataSet
особенно здОрово, что обращаться к БД всего 1 раз, а не на каждый чих
плохо, если выборка большая - читаться будет целиком, только потом сортироваться