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

Вниз

План выполнения ХП   Найти похожие ветки 

 
Fom   (2004-01-30 13:20) [0]

Мастаки, что может быть причиной не использования индекса?
есть 3 таблицы у всех есть одно и то же поле FieldX NUMERIC(10,0)
У всех трех таблиц есть индексы по этому полю
ХП выглядит так

BEGIN
FOR
SELECT T1.FIELD1, T2.FIELD4, T3.FIELD8, COUNT(T2.FIELD5)
FROM TABLE1 T1 JOIN TABLE2 T2 ON (T1.FIELDX = T2.FIELDX)
JOIN TABLE3 T3 ON (T1.FIELDX = T3.FIELDX)
WHERE T3.FIELD2 = "LALA"
GROUP BY T1.FIELD1, T2.FIELD4, T3.FIELD8
INTO ....
DO
SUSPEND;
END


Так вот посмотрев план в IBExpert видно что вторая таблица(TABLE2) не использует индекс
Что делать?


 
Fom   (2004-01-30 14:12) [1]

Мастаки, что посоветуете, жрет этот запрос, пакость, время и все-тут . :(


 
Romkin ©   (2004-01-30 14:18) [2]

Может, лучше переделать на без join, а из дополнительных таблиц брать в теле цикла данные?


 
Academic ©   (2004-01-30 14:19) [3]

Не использует какой индекс?
по полю FIELDX?


 
Fom   (2004-01-30 14:30) [4]

Не использует какой индекс?
да по полю FIELDX


 
Alexander Vasjuk   (2004-01-30 14:44) [5]

а по T3.FIELD2 индекс есть?


 
Academic ©   (2004-01-30 14:44) [6]

если группировка нужна только для COUNT то
попробуй сделать так:
BEGIN
FOR
SELECT T1.FIELD1, T2.FIELD4, T3.FIELD8
FROM TABLE1 T1 JOIN TABLE2 T2 ON (T1.FIELDX = T2.FIELDX)
JOIN TABLE3 T3 ON (T1.FIELDX = T3.FIELDX)
WHERE T3.FIELD2 = "LALA"
INTO ....
DO
SELECT COUNT(TABLE2.FIELD5) FROM TABLE2
WHERE TABLE2.FIELDX = :T1.FIELDX (из Into)
INTO ....
SUSPEND;
END


 
Fom   (2004-01-30 14:49) [7]

2 Alexander Vasjuk
внимательно прочтите вопрос

Academic © (30.01.04 14:44) [6]
ссори COUNT по третьей таблице


 
Alexander Vasjuk   (2004-01-30 15:57) [8]

Fom (30.01.04 14:49) [7]

Я прочел
У меня были похожие грабли

Может статься так, что за отсуствием индекса T3.FIELD2 таблица Т3 все равно читается NATURAL, и тут все зависит от последовательности перечисления таблиц в запросе


 
Fom   (2004-01-30 16:16) [9]

менял местами таблицы в запросе, и индекс удалял, и статистику собирал - пофиг


 
Romkin ©   (2004-01-30 16:21) [10]

НУ неужели трудно сделать for select только по одной таблице или двум первым таблицам? А внутри этого цикла выбирать недостающие данные?


 
Fom   (2004-01-30 17:15) [11]

2 Romkin
сделал

BEGIN
FOR
SELECT T1.FIELD1, T1.FIELDX
FROM TABLE1 T1
INTO ....
DO
BEGIN
FOR
SELECT T2.FIELD4
FROM TABLE2 T2
WHERE T2.FIELDX = :VARFILEDX
INTO ...
DO
SUSPEND;
END
END

всеравно не используется индекс. уже бекап-ресторе делал :(


 
Fam   (2004-01-30 17:18) [12]

к последнему моему меседжу - теперь не используется индекс первой таблицы :)


 
Fam   (2004-01-31 10:18) [13]

Мастаки, что подскажете?



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

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

Наверх




Память: 0.49 MB
Время: 0.021 c
1-79907
AsbAlex
2004-02-08 01:23
2004.02.25
Помагите перенести код с паскаля на си


14-80114
mfender
2004-02-03 05:46
2004.02.25
Домены. Опять реорганизация?


1-79847
Серёга
2004-02-10 18:55
2004.02.25
Файлы *.dcu


6-80071
KILLER_ABV
2003-12-18 12:00
2004.02.25
Как написать собственный прокси-сервекр?


14-80091
Mox Fulder
2004-02-03 15:24
2004.02.25
DivX