Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Гродненский Форум
19 Июль 2025, 14:24:07
Новости, реклама:
   Главная   Новости Гродно Помощь Игры Календарь Войти Регистрация   Меню
Гродненский Форум > Компьютеры > Программирование
(Модераторы: Админ, barmalei) > Тема:

Как установить текущую запись в БД, не используя Locate ?

Страниц  :   Вниз
  Печать  
Автор Тема: Как установить текущую запись в БД, не используя Locate ?  (Прочитано 2250 раз)
0 Пользователей и 1 Гость смотрят эту тему.
alex-v
Настоящий гродненец
****

Репутация: +11/-0
Offline Offline

Пол: Мужской
Сообщений: 320

Просмотр профиля
« : 23 Март 2009, 17:06:54 »

Как в TIBQuery установить текущую запись N, не используя TIBQuery::Locate ?
Потому что TIBQuery::Locate медленно работает на больших базах.
Как это сделать быстрее?

(это для C++Builder)
Записан
VooDoo
Почетный гродненец
*****

Репутация: +89/-1
Offline Offline

Пол: Мужской
Сообщений: 2885


Dum spiro spero

Просмотр профиля WWW Email
« Ответ #1 : 24 Март 2009, 00:23:56 »

 Непонимающий
Записан

Are you human? - My body is.
Do you feel pain? - My body does.
..- --- --- -.. --- ---
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #2 : 24 Март 2009, 01:37:56 »

Какая конкретно база? Для разных баз есть разные механизмы получения последней записи в таблице. Или тебе надо узнать текущую позицию курсора?
Записан
Gloomy Fox
Гродненец
**

Репутация: +43/-0
Offline Offline

Пол: Мужской
Сообщений: 296


to live is to die

Просмотр профиля WWW
« Ответ #3 : 24 Март 2009, 12:31:49 »

Цитата: alex-v
Как установить текущую запись в БД, не используя Locate?
Во-первых, нет даже такого понятия, как текущая запись в таблице, а тем более уж в БД, особенно если речь идет об IB (FB, Y...). Сие понятие может быть применимо только для какого-то конкретного датасета или курсора. И то не факт.

Как в TIBQuery установить текущую запись N, не используя TIBQuery::Locate ?
Потому что TIBQuery::Locate медленно работает на больших базах.
Как это сделать быстрее?
Делается это достаточно просто. Оптимизируй SQL-запросы и не выбирай на клиента тысячи ненужных записей, все равно пользователь их не сможет осознанно просмотреть. Используй фильтрацию по параметрам в SQL-запросах. Локейт потому и тормозит, что фетчится большой объем данных с сервера. Короче, пересмотри логику работы приложения.
Записан
alex-v
Настоящий гродненец
****

Репутация: +11/-0
Offline Offline

Пол: Мужской
Сообщений: 320

Просмотр профиля
« Ответ #4 : 24 Март 2009, 14:04:13 »

Цитата: spammer
Какая конкретно база? Для разных баз есть разные механизмы получения последней записи в таблице. Или тебе надо узнать текущую позицию курсора?
База Firebird. Мне нужно в TIBQuery установить курсор на определенную запись. С этим отлично справляется TIBQuery::Locate, но он на больших базах тормозит. Поэтому я ищу другой более быстрый способ установки курсора в TIBQuery.

Цитата: Gloomy Fox
Делается это достаточно просто. Оптимизируй SQL-запросы и не выбирай на клиента тысячи ненужных записей, все равно пользователь их не сможет осознанно просмотреть. Используй фильтрацию по параметрам в SQL-запросах. Локейт потому и тормозит, что фетчится большой объем данных с сервера. Короче, пересмотри логику работы приложения.
Да, я этот ответ слышал в нескольких источниках. Видимо так и надо через SELECT выбирать ограниченное количество записей (допустим не более 10000).

Спасибо.
Записан
Gloomy Fox
Гродненец
**

Репутация: +43/-0
Offline Offline

Пол: Мужской
Сообщений: 296


to live is to die

Просмотр профиля WWW
« Ответ #5 : 24 Март 2009, 17:21:21 »

База Firebird. Мне нужно в TIBQuery установить курсор на определенную запись. С этим отлично справляется TIBQuery::Locate, но он на больших базах тормозит. Поэтому я ищу другой более быстрый способ установки курсора в TIBQuery.
Ах, да... Мне кажется, что уважаемый alex-v не совсем понимает разницу между курсором БД и курсором, который на экране мерцает. Если это не так, то приношу извинения, а иначе, марш сюда http://www.google.com/search?q=%D0%BA%D1%83%D1%80%D1%81%D0%BE%D1%80+%D0%91%D0%94 и читать все здесь http://ibase.ru/develop.htm Подмигивающий
Записан
VooDoo
Почетный гродненец
*****

Репутация: +89/-1
Offline Offline

Пол: Мужской
Сообщений: 2885


Dum spiro spero

Просмотр профиля WWW Email
« Ответ #6 : 24 Март 2009, 17:48:36 »

BTW
про базы... сегодня случился эксепшен  Строит глазки
JZ006: Caught IOException: java.io.IOException: JZ0PA: The query has been cancelled and the response discarded.  The cancel was probably issued by another statement on the connection.

ржом до сих пор Улыбка sybase сцуко умный
Записан

Are you human? - My body is.
Do you feel pain? - My body does.
..- --- --- -.. --- ---
alex-v
Настоящий гродненец
****

Репутация: +11/-0
Offline Offline

Пол: Мужской
Сообщений: 320

Просмотр профиля
« Ответ #7 : 25 Март 2009, 22:05:31 »

Deus6666, спасибо за код, но что-то не пойму почему он быстрее? Там ведь тоже идет перебор всех записей...
Записан
alex-v
Настоящий гродненец
****

Репутация: +11/-0
Offline Offline

Пол: Мужской
Сообщений: 320

Просмотр профиля
« Ответ #8 : 25 Март 2009, 22:25:05 »

А почему быстрее в два раза? Что в этом коде особенного?
Записан
Dark Side
Почетный гродненец
*****

Репутация: +63/-8
Offline Offline

Предупреждения: у пользователя уже 2 предупреждения
Пол: Мужской
Сообщений: 1142


Способствую

S https://advicenyc.com https://advicenyc.com https://advicenyc.com https://advicenyc.com https://advicenyc.com Просмотр профиля WWW
« Ответ #9 : 30 Март 2009, 01:11:09 »

Мля пипец тока один программер Deus 666 , остальные флудеры, а умные из себя пипец!!!  Я бы тож локаутом делал и делаю, не знаю как это проффесионально ли
Записан

Воля или СмертЪ
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #10 : 30 Март 2009, 09:20:38 »

С чего такие выводы о профессионализме местного народонаселения? Или просто охота потроллить на ночь глядя?
Пост твой несет кстати минимум полезной информации, а точнее вообще 0. Кого еб#т как ты делаешь, может ты еще и на пхп это пишешь, это же не значит что так надо? Автором был задан конкретный вопрос, и нечего опять сводить тему в срач.

ps Предлагаю дать Dark Side пред за флуд и флейм.
Записан
Dark Side
Почетный гродненец
*****

Репутация: +63/-8
Offline Offline

Предупреждения: у пользователя уже 2 предупреждения
Пол: Мужской
Сообщений: 1142


Способствую

S https://advicenyc.com https://advicenyc.com https://advicenyc.com https://advicenyc.com https://advicenyc.com Просмотр профиля WWW
« Ответ #11 : 30 Март 2009, 09:46:55 »

 НУ а твой ник сам за себя говорит Улыбка
Записан

Воля или СмертЪ
iddqd
Лёдчег
Почетный гродненец
*****

Репутация: +170/-10
Offline Offline

Пол: Мужской
Сообщений: 2275


Не уйдешь!

Просмотр профиля
« Ответ #12 : 30 Март 2009, 13:41:32 »

господа, флуд прекратить!
Записан
Страниц  :   Вверх
  Печать  
 
Перейти в:  

Войти
Войдите, чтобы добавить комментарий

Войдите через социальную сеть

Имя пользователя:
Пароль:
Продолжительность сессии (в минутах):
Запомнить:
Забыли пароль?

Контакт
Powered by MySQL Powered by PHP Мобильная версия
Powered by SMF 1.1.20
SMF © 2006-2025, Simple Machines
Simple Audio Video Embedder
| Sitemap
Valid XHTML 1.0! Valid CSS!
Страница сгенерирована за 0,117 секунд. Запросов: 20.