Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.07.25;
Скачать: [xml.tar.bz2];

Вниз

DOA при подсчете кол-ва записей в TOracleDataSet происходит запро   Найти похожие ветки 

 
KirillR ©   (2005-06-02 13:18) [0]

Посмотрел как работает свойство CountQueryHits в TOracleDataSet, так оказалось, что происходит повторный запрос к базе следующего вида
select count(*) from (SQL.Text)

причем хинты из SQL.Text удаляются (происходит предварительно какая обработка этого запроса). В итоге налицо 2 минуса: во-первых, выполняется лишний раз запрос, во-вторых, запрос идет без нужных хинтов. Исправил на RecordCount, но все равно в некоторых случаях выполняется запрос select count(*) from (SQL.Text)

Каким образом TOracleDataSet считает записи, как обойтись без лишнего запроса?


 
Sergey13 ©   (2005-06-02 13:23) [1]

>Каким образом TOracleDataSet считает записи, как обойтись без лишнего запроса?
А это так критично? Может вообще постараться не опираться на количество записей?


 
KirillR ©   (2005-06-02 14:45) [2]

Без RecordCount или CountQueryHits не обойтись. Эти свойства используются в родительской форме, являющейся предком для очень многих форм.


 
Sergey13 ©   (2005-06-02 14:50) [3]

2[2] KirillR ©   (02.06.05 14:45)
Ну тогда чем не катит автозапрос? Тормозит без хинтов что-ли сильно? Может тогда свой приделать как-нибудь, с хинтами. Или разбраться с хинтами и заменить их нужными индексами - может тут есть место для оптимизации.


 
KirillR ©   (2005-06-03 10:33) [4]

Тормозит без хинтов что-ли сильно?>> да сильно, как раз тот случай, когда ошибается оптимизатор. Нужные индексы соданы


 
Val ©   (2005-06-03 10:45) [5]

>KirillR ©   (02.06.05 13:18)
Каким образом TOracleDataSet считает записи, как обойтись без лишнего запроса?
Вы думаете, что есть варианты, как можно посчитать количество записей без запроса count или пробегания по датасету?
По-моему, раз дело в конкретном случае, то стоит посмотреть - где/как выкидываются ваши хинты из запроса, м.б. отключается свойством, либо перекрывать соотв. методы своими...а не париться риторическими вопросами.


 
Sergey13 ©   (2005-06-03 11:40) [6]

2 [4] KirillR ©   (03.06.05 10:33)
Ну напиши свою фунцию MyRecordCount где сам сделай
select count(*) from (SQL.Text)
но с хинтами.


 
Bronco ©   (2005-06-03 11:52) [7]


> Каким образом TOracleDataSet считает записи, как обойтись
> без лишнего запроса?

Если у тебя QueryAllRecords (кажется так свойство называется) = False, то без доп. запроса уж никак не обойтись. Другое дело, что ты можешь (скажем на AfterOpen) сам давать нужный запрос кол-ва записей с нужными хинтами.
Хотя, в многопользовательском режиме опять же нет гарантии что на момент первого запроса будет записей столько же сколько на момент второго. Т.е. можешь получить ложные данные.


 
Sergey13 ©   (2005-06-03 11:55) [8]

2[4] KirillR ©   (03.06.05 10:33)
> да сильно, как раз тот случай, когда ошибается оптимизатор. Нужные индексы соданы
А какой оптимзатор то работает? Может статистика старая или неполная?


 
KirillR ©   (2005-06-10 09:47) [9]

To Val>Вы думаете, что есть варианты, как можно посчитать количество >записей без запроса count или пробегания по датасету?
C чего вы взяли, что я так думаю. Основной вопрос был в том, можно ли по DataSet"у посчитать кол-во записей (не обращаясь к базе) и в редактировании исх. запроса при выполнении CountQueryHits.
>..либо перекрывать соотв. методы своими...
так лучше и сделать

To Sergey13
>> да сильно, как раз тот случай, когда ошибается оптимизатор. >>Нужные индексы соданы
>А какой оптимзатор то работает? Может статистика старая или >неполная?
Сбор полной статистики с подробными гистограммами не помогает. Тот случай, когда оптимизатор исходит из предположения о независимости предикатов.
> Ну напиши свою фунцию MyRecordCount где сам сделай
>select count(*) from (SQL.Text)
>но с хинтами.
Наверное, лучше так и сделать.

Всем спасибо за ответы



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

Форум: "Базы";
Текущий архив: 2005.07.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.01 c
6-1113413845
Дельфин
2005-04-13 21:37
2005.07.25
Интернетовский IP-адрес


4-1117345046
NikNet
2005-05-29 09:37
2005.07.25
Как внутри ASM кода объявить PCHAR строку?


1-1120595061
Nes
2005-07-06 00:24
2005.07.25
Как перевести цвет из colordialog`a в такой же в HTML`e


3-1118714814
Viktop
2005-06-14 06:06
2005.07.25
как в базу Paradox записать изображения.


1-1120764900
Lexa
2005-07-07 23:35
2005.07.25
Подвисание во время цикла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский