Форум: "Базы";
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];
ВнизЗапрсы в Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c