Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-67016
Leo^Sun
2002-01-29 07:39
2002.03.21
Программа в программе.


1-66862
Kettle of delphi
2002-03-04 17:05
2002.03.21
Подскажите пожалуйста! Код TForm2.Create(nil) вовсе не помещает создаваемую форму на панель задач! (он ее помещает на РАБОЧИЙ СТОЛ)


3-66780
fidget
2002-02-19 18:56
2002.03.21
скорость работы MySQL+ODBC+ADO


1-66903
Shoo
2002-03-06 12:08
2002.03.21
Обновление данных на форме


1-66923
Agent Smith
2002-03-06 17:44
2002.03.21
Архивы...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский