alex-v
|
 |
« : 23 Март 2009, 17:06:54 » |
|
Как в TIBQuery установить текущую запись N, не используя TIBQuery::Locate ? Потому что TIBQuery::Locate медленно работает на больших базах. Как это сделать быстрее?
(это для C++Builder)
|
|
|
Записан
|
|
|
|
VooDoo
|
|
|
|
Записан
|
Are you human? - My body is. Do you feel pain? - My body does. ..- --- --- -.. --- ---
|
|
|
spammer
|
Какая конкретно база? Для разных баз есть разные механизмы получения последней записи в таблице. Или тебе надо узнать текущую позицию курсора?
|
|
|
Записан
|
|
|
|
Gloomy Fox
Гродненец
 Репутация: +43/-0
Offline
Пол: 
Сообщений: 296
to live is to die
|
Как установить текущую запись в БД, не используя Locate? Во-первых, нет даже такого понятия, как текущая запись в таблице, а тем более уж в БД, особенно если речь идет об IB (FB, Y...). Сие понятие может быть применимо только для какого-то конкретного датасета или курсора. И то не факт. Как в TIBQuery установить текущую запись N, не используя TIBQuery::Locate ? Потому что TIBQuery::Locate медленно работает на больших базах. Как это сделать быстрее? Делается это достаточно просто. Оптимизируй SQL-запросы и не выбирай на клиента тысячи ненужных записей, все равно пользователь их не сможет осознанно просмотреть. Используй фильтрацию по параметрам в SQL-запросах. Локейт потому и тормозит, что фетчится большой объем данных с сервера. Короче, пересмотри логику работы приложения.
|
|
|
Записан
|
|
|
|
alex-v
|
Какая конкретно база? Для разных баз есть разные механизмы получения последней записи в таблице. Или тебе надо узнать текущую позицию курсора? База Firebird. Мне нужно в TIBQuery установить курсор на определенную запись. С этим отлично справляется TIBQuery::Locate, но он на больших базах тормозит. Поэтому я ищу другой более быстрый способ установки курсора в TIBQuery. Делается это достаточно просто. Оптимизируй SQL-запросы и не выбирай на клиента тысячи ненужных записей, все равно пользователь их не сможет осознанно просмотреть. Используй фильтрацию по параметрам в SQL-запросах. Локейт потому и тормозит, что фетчится большой объем данных с сервера. Короче, пересмотри логику работы приложения. Да, я этот ответ слышал в нескольких источниках. Видимо так и надо через SELECT выбирать ограниченное количество записей (допустим не более 10000). Спасибо.
|
|
|
Записан
|
|
|
|
|
VooDoo
|
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
|
Deus6666, спасибо за код, но что-то не пойму почему он быстрее? Там ведь тоже идет перебор всех записей...
|
|
|
Записан
|
|
|
|
alex-v
|
А почему быстрее в два раза? Что в этом коде особенного?
|
|
|
Записан
|
|
|
|
Dark Side
|
Мля пипец тока один программер Deus 666 , остальные флудеры, а умные из себя пипец!!! Я бы тож локаутом делал и делаю, не знаю как это проффесионально ли
|
|
|
Записан
|
Воля или СмертЪ 
|
|
|
spammer
|
С чего такие выводы о профессионализме местного народонаселения? Или просто охота потроллить на ночь глядя? Пост твой несет кстати минимум полезной информации, а точнее вообще 0. Кого еб#т как ты делаешь, может ты еще и на пхп это пишешь, это же не значит что так надо? Автором был задан конкретный вопрос, и нечего опять сводить тему в срач.
ps Предлагаю дать Dark Side пред за флуд и флейм.
|
|
|
Записан
|
|
|
|
Dark Side
|
НУ а твой ник сам за себя говорит 
|
|
|
Записан
|
Воля или СмертЪ 
|
|
|
iddqd
|
господа, флуд прекратить!
|
|
|
Записан
|
|
|
|
|