Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: CL | DM;

Вниз

Поиск по индексированному полю типа integer   Найти похожие ветки 

 
DancerMan ©   (2006-04-10 10:57) [0]

Добрый день!

В таблице есть поле ID - integer. Есть уникальный индекс по этому полу.
Данные из таблицы получаю с помощью IBQuery. (order by ID)
Каким способом быстрее всего перейти на запись с заданным номером ID?


 
Виталий Панасенко   (2006-04-10 10:59) [1]

select * from table where ID=:ID_VALUE


 
DancerMan ©   (2006-04-10 11:01) [2]


> Виталий Панасенко   (10.04.06 10:59) [1]

Мне нужно не выбрать запись с данным номером, а в открытом наборе данных перейти на нее.


 
Desdechado ©   (2006-04-10 11:05) [3]

Locate


 
Savek   (2006-04-10 11:05) [4]

Locate


 
DancerMan ©   (2006-04-10 11:08) [5]


> Desdechado ©   (10.04.06 11:05) [3]


> Savek   (10.04.06 11:05) [4]

Мне кажется функция Locate работает слишком медленно. В таблице всего лишь 40000 записей, а поле индексированно. Мой Pentium 1,7 /512 задумывается где-то на 1-2 секунды.
Может есть более быстрый вариант перехода?


 
Anatoly Podgoretsky ©   (2006-04-10 11:09) [6]

Зачем нужно выбирать ненужные записи с сервера?


 
Sergey13 ©   (2006-04-10 11:11) [7]

2[5] DancerMan ©   (10.04.06 11:08)
> В таблице всего лишь 40000 записей, а поле индексированно. Мой Pentium 1,7 /512 задумывается где-то на 1-2 секунды.
Это потому, что ты не задумался оптимизировать запрос. Работа методами Парадокса/ДиБейса, не всегда хороша для SQL-серверов.


 
DancerMan ©   (2006-04-10 11:47) [8]


> Anatoly Podgoretsky ©   (10.04.06 11:09) [6]
> Зачем нужно выбирать ненужные записи с сервера?

У меня есть компонент, который отображает данные в виде дерева. Я эти данные сразу и выбираю.
Если выборку этих данных написать в  виде хранимой процедуры, это ускорит процесс? Или все-равно надо обрабатьвать каждое раскрытие ветки и выбирать данные по необходимости?


 
Desdechado ©   (2006-04-10 11:55) [9]

> Или все-равно надо обрабатьвать каждое раскрытие ветки и выбирать данные по необходимости
Это было бы рациональнее с точки зрения скорости и трафика. В какие-то ветки пользователь может вообще никогда не зайти, так зачем читать все подряд?
Дочитывать только при нажатии плюса и отсутствия прочитанных к тому времени данных в этой подветке.


 
sniknik ©   (2006-04-10 12:08) [10]

> Я эти данные сразу и выбираю.
выбираеш на клиента где индекс который на сервере уже по барабану...

не знаю как в IBQuery, а например в ADODataSet можно построить локальный индекс, самый простой способ(заодно и упорядочится) методу Sort имя поля задать. вот после этого уже Locate будет индекс использовать.


 
atruhin ©   (2006-04-10 15:33) [11]


> У меня есть компонент, который отображает данные в виде
> дерева. Я эти данные сразу и выбираю.

А ты думаешь зачем люди старались писали дерево, которое запрашивает данные по мере необходимости? Чтобы ты их все запрашивал на клента , апотом сортировал?


 
Виталий Панасенко   (2006-04-11 10:29) [12]

Сделай FetchAll. Думаю, после этого Locate будет работать быстрее,
т.к. ВСе 40000 записей будут на клиенте
> , а поле индексированно

Индексировано оно для сервера, чтобы клиент при выборке select * from table where id=:id_value получал данные как можно бьстрее(сервер по индексу их быстрее найдет, чем перебором)


 
DancerMan ©   (2006-04-11 12:22) [13]

Всем спасибо!
Выбираю на клиента записи по мере необходимости.
Естественно, увеличились скорость загрузки приложения и скорость перехода на нужную запись.
Вопрос закрыт.



Страницы: 1 вся ветка

Текущий архив: 2006.06.04;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.073 c
4-1142232387
ksa2002
2006-03-13 09:46
2006.06.04
com порт , чтение и запись через два потока


15-1146522948
Сумчатое
2006-05-02 02:35
2006.06.04
Сколько весят песочные часы, когда песчек сыплется ?


15-1147551749
alex-drob
2006-05-14 00:22
2006.06.04
Сохранить/загрузить динамический массив


2-1147698846
webpauk
2006-05-15 17:14
2006.06.04
Скрыть информацию


5-1132748649
DimaBR
2005-11-23 15:24
2006.06.04
Сохранение Published свойства