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

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

Locate - быстрее.... [D5, IB6.x]


SasaR ©   (2003-11-03 12:31:00) 

Ув. мастера - Что можно сделать с DataSetom, который вернул SQL запрос, чтобы метод Locate был быстрее ??? Попробовал отсортировать предварительно по "поисковому" полю - стало на четверть быстрее, а какие ещё предложения ???


VAleksey   (2003-11-03 14:01:00) [1]


> Vlad © (03.11.03 12:59)

И в чем опасность?


Vlad   (2003-11-03 12:59:00) [2]

>VAleksey © (03.11.03 12:53) [5]
Конечно вариант, но только есть шанс сбить с толку пользователя.
Напр. в случае, когда набор отражается в DBGrid.


Romkin   (2003-11-03 12:53:00) [3]

Это во-первых :) Во-вторых, в D5 в хелпе не написаночто locate использует индекс. В отличие от D4 - не использует :)


VAleksey   (2003-11-03 12:53:00) [4]

Select * From Table
Where
MyId = :pMyId
Union all
Select * From Table
Where
MyId <> :pMyId

PS
Идея ясна?
Т.е. нужная тебе запись будет первой.


Zacho   (2003-11-03 12:49:00) [5]


> SasaR (03.11.03 12:40) [2]

> В хелпе написано,
> Локате использует индекс, если он есть....

Это справедливо для файл-серверных БД. IB - SQL-сервер, в клиентском приложении никаких индексов нет, Locate работает перебором всех записей.

> 1. Можно ли предварительно "проиндексировать" возвращенный
> датасет ?

Можно. И написать свой Locate. И тянуть с сервера кроме данных еще и индексы. В общем случае - овчинка выделки не стоит. Пересматривай организацию своего приложения. Запросы должны возвращать несколько десятков (в крайнем случае - сотен) записей. Пользователю больше и не нужно, все равно человек не может нормально работать с гридом с тысячью записей. Конечно, не считая таких ситуаций, как, например, построение отчетов, для к-рых могут понадобится и десятки тысяч записей. Но тут уже ничего не поделаешь.


SasaR   (2003-11-03 12:40:00) [6]


> Zacho ©

- мне пива не хватит с Вами расплатиться :))). В хелпе написано, Локате использует индекс, если он есть....
1. Можно ли предварительно "проиндексировать" возвращенный датасет ?
2. В БД заранее сделать это ?
Поможет ли для сабжа 1 и/или 2 ?
Если да, то как сделать 1-е ?


Zacho   (2003-11-03 12:35:00) [7]

Выбирать поменьше записей. Кстати, в общем случае сортировка не поможет - искомая запись может находиться и в конце НД


Наверх

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