Главная страница
    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.015 c
3-1118830441
stud
2005-06-15 14:14
2005.07.25
помогите с компонентом для отображения текста и картинок (Д7)


14-1120441299
vidiv
2005-07-04 05:41
2005.07.25
Инсталлятор


1-1120926660
Michael5
2005-07-09 20:31
2005.07.25
Подскажите, как код разнести по разным файлам (Unit ам)?


3-1118895406
Dron1173
2005-06-16 08:16
2005.07.25
SQL запрос


14-1120456603
dmitry501
2005-07-04 09:56
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский