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

Вниз

Запрсы в   Найти похожие ветки 

 
bas   (2002-02-22 16:26) [0]

Привет! Есть проблемма. Делаю два запроса:

select min(NFR_ID) from FUTRATE where NFR_ID > 6305056

select min(NFR_ID) from FUTRATE where nF_id=161 and NFR_ID > 6305056;

Первый выполняется 10мсек, второй 15сек. Оба поля проиндексированны, в таблице около 6миллиона записей. Делал соместный индекс(nf_id,nfr_id) не помогает. Если кто-то встречал подобный трабл - ответи, плиз, очень надо


 
EAlexander ©   (2002-02-22 16:39) [1]

посмотрите план выполнения запросов. наверно второй делается через full scan. можно пропробоват использовать hint в запросе.


 
bas   (2002-02-22 16:46) [2]

Для проверки оба запроса делаются зерез SQL+(один за другим).
А что такое hint.
Спасибо за ответ


 
EAlexander ©   (2002-02-22 16:50) [3]

hint - это указание оптимизатору Ora как выполнять запрос.
Например:
SELECT /*+ INDEX_DESC(TEST_SETI I_TEST_SETI) FIRST_ROWS INDEX_FFS*/
N_SH, TESTTIME, ELM, WA, WB, WC,
VAA, VAB, VAC, FREQ,
IA, IB, IC, UA, UB, UC, PFANGA,
PFANGB, PFANGC, PHANGB, PHANGC
FROM CNT.TEST_SETI
WHERE N_SH = :P_N_SH
AND TESTTIME <= :P_TESTTIME
AND ROWNUM < 2
будет выбираться последняя строка из таблицы на указанный момент (TestTime) при этом сортировка делается по указанному индексу INDEX_DESC(TEST_SETI I_TEST_SETI), где
TEST_SETI - имя таблицы, а I_TEST_SETI используемый индекс.

Я бы рекомендовал использовать SQL Navigator - там просто и понятно показыватся план исполнения запроса.


 
bas   (2002-02-22 17:07) [4]

Спасибо за совет - где копать.
Не совсем понял ,но теперь в хелпе буду читать.
Еще раз спасибо.


 
bas   (2002-02-22 17:20) [5]

>EAlexander Если не влом. Ответь, плиз, сильно повысится призводительность, если использовать hint. Примерно во сколько.
А то м.б. и не стоит рыпатся:)). У тебя сколько записей было в таблице. У меня уже 6. мил. и б. расти - каждый день туда пихается до 80тыс. записей. О чистке истории я уже думал, но еще руки не дошли. Спасибо.


 
petr_v_a ©   (2002-02-22 17:52) [6]

а может быть и такое :)))
по NFR_ID индекс "хороший", с большим отношением (кол-во_различных_значений)/(кол-во_значений), а по nF_id - с маленьким, и толку от него нет, а статистики по таблице/индексам не собраны => индексы для оптимизатора равнозначны.


 
Bachin   (2002-02-22 18:07) [7]

Для большей понятности твоиз данных выдай в студию
select count(*) from FUTRATE group by nF_id
и
select count(*) from FUTRATE group by NFR_ID


 
bas   (2002-02-22 18:19) [8]

оБЕСНЯЮ
NFR_ID -Primary KEY
NF_ID -Forign Key
>petr_v_a
Ты прав на счет Хороших и плохих. Но как от этого избавится
как запрос оптимизировать?
>Bachin
Время
select count(*) from FUTRATE group by nF_id
49 сек

select count(*) from FUTRATE group by NFR_ID
39 cек


 
petr_v_a ©   (2002-02-22 18:53) [9]

>Но как от этого избавится
> как запрос оптимизировать?

analyze table FUTRATE


 
Bachin   (2002-02-22 19:27) [10]

это не для времени :) - просто я стормозил :)))
select count(*)
from ( select nf_id
from futrate
group by nf_id ) a

просто хотелось оценить полезность индекса...

кстати, добавил индекс надеюсь в таком порядке: nf_if, nfr_id.



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

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

Наверх




Память: 0.49 MB
Время: 0.015 c
3-66785
bas
2002-02-22 16:26
2002.03.21
Запрсы в


14-67009
С_тоша
2002-02-08 16:37
2002.03.21
HELP!!!!!!!!


3-66722
LNF
2002-02-20 09:20
2002.03.21
А можно использовать локально BDE в виде набора dll, подключаясь к БД не через TTable, а через TQuery?


1-66935
fag2000@ok.ru
2002-03-06 15:36
2002.03.21
как получить значение отдельного бита?


7-67019
Dr. Web
2001-12-04 08:55
2002.03.21
Voice modem