![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]
Выбирать поменьше записей. Кстати, в общем случае сортировка не поможет - искомая запись может находиться и в конце НД