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

Вниз

Select из ХП и таблицы в одном запросе   Найти похожие ветки 

 
Жук ©   (2003-05-29 11:49) [0]

Запрос :
select t.*,p.rez
from mtable t,mproc(input_par) p
order by p.rez

Сильно ли влияет отбор записей одновременно из таблицы и ХП на скорость выполнения запроса и индексацию ?


 
Johnmen ©   (2003-05-29 12:03) [1]

>Сильно ли влияет ... на скорость ...

По сравнению с чем ?


 
Alexandr ©   (2003-05-29 12:18) [2]

1) где условие соединения?
2) А не упадет?
3) Мож проще все это запихать в процедуру?
4) На все вопросы даст ответ план


 
Жук ©   (2003-05-29 13:14) [3]


> Johnmen © (29.05.03 12:03)
>
> По сравнению с чем ?

Ну хоть с той же ХП.

> Alexandr © (29.05.03 12:18)
> 1) где условие соединения?
> 2) А не упадет?
> 3) Мож проще все это запихать в процедуру?
> 4) На все вопросы даст ответ план

1) Нет
2) Кто ?
3) Не знаю. Всё надо смотреть по конкретике.
4) План весь выкурили в http://delphimaster.net/view/15-1053950176/ :-)))


 
Johnmen ©   (2003-05-29 13:20) [4]

Слишком неконкретные исходные данные для нормального ответа...:)


 
Жук ©   (2003-05-29 13:28) [5]


> Johnmen © (29.05.03 13:20)
> Слишком неконкретные исходные данные для нормального ответа...:)

Сам вижу. Попробую сформулировать. Вот :

Romkin © (28.05.03 12:28)
А вот соединять в запросе таблицу и ХП - очень дурной тон... Мне, например, такого соединения никогда не надо было.


Далее :

Danilka © (29.05.03 09:04)
дурной тон потому-что соединение будет native, индексы не будут использоваться.


Верно ли всё это ?


 
Zacho ©   (2003-05-29 13:30) [6]

Собственно, насколько я понимаю, в основном вопрос заключается в том: используются ли индексы для соединения таблицы и результатов, возвращяемых хранимой процедурой в запросах типа SELECT ... FROM TABLE JOIN SP ON ..
Я всегда считал, что нет, но что-то засомневался :-) Кто нибудь может аргументированно объяснить ?


 
Жук ©   (2003-05-29 14:01) [7]

2 Johnmen
Евгений ! Вся надежда на вас !!!


 
Desdechado ©   (2003-05-29 14:21) [8]

На форуме interbase-world промелькнула инфа, что Firebird 1.5 уже умеет объединять результат ХП с таблицами по индексу. Насколько эффективно - не знаю.
Ну а остальные - традиционно нет.

А в запросе автора ветки объединения нет, поэтому будет простое декартово произведение, в котором исп-е индексов бессмысленно.

Ну и "индексация" - это ПРОЦЕСС СОЗДАНИЯ (или поддержания) индекса, а не его использования ...


 
Johnmen ©   (2003-05-29 14:27) [9]

Как показывают экперименты, при таких соединениях (таблица с ХП) индексы НЕ ИСПОЛЬЗУЮТСЯ ! Что понятно.
Используется альтернативное соединение MERGE для предварительно отсортированных потоков (SORT), что и видно в плане выполнения запроса.
Вот такая коротенькая имха...:)))


 
Zacho ©   (2003-05-29 14:33) [10]


> Desdechado © (29.05.03 14:21)


> Johnmen © (29.05.03 14:27)

Так я и думал. И мои эксперименты это подтверждали. Но меня сбил с толку план, приведенный Жук © в http://delphimaster.net/view/15-1053950176/
Или я как-то неправильно этот план понял ? Или просто плохо его рассмотрел ? :-)


 
Жук ©   (2003-05-29 14:42) [11]


> Johnmen © (29.05.03 14:27)

Просто зарезали. :-) Щас буду юзать эти объединения, пока сервер не уроню...

> Zacho © (29.05.03 14:33)

Наверное плохо рассмотрели. :-)


 
Desdechado ©   (2003-05-29 14:51) [12]

2 Zacho © (29.05.03 14:33)
приведенный план явно относился к содержимому ХП, а не к запросу


 
Zacho ©   (2003-05-29 14:54) [13]


> Desdechado © (29.05.03 14:51)

Вот это похоже на правду :-)


 
Жук ©   (2003-05-29 15:03) [14]


> Desdechado © (29.05.03 14:51)

Согласен.


 
Жук ©   (2003-05-29 15:25) [15]

Запрос :
select k.*,n.nk,s.name,
a.a_fam,a.a_kolwo,a.a_strana
from kniga k left join serii s on k.id_seria=s.id,
awtor_knigi(k.id) a,nomer(k.id_inrec) n
where k.id_inrec like "1%"
order by n.nk


kniga and serii - таблицы, awtor_knigi и nomer - ХП.

План у меня не показывается, но по анализу выполнения видно, что все чтения происходят по индексам, кроме rdb$relation_constraints.

Что бы это значило ?


 
Johnmen ©   (2003-05-29 15:44) [16]

>Жук ©

"Ещё одна особенность, точнее на этот раз пожалуй даже глупость, которую периодически пытаются сделать новички. Ну например так:
select * from sp1(t.id) sp, test2 t
То есть в качестве параметра процедуры идёт одно из полей другого соединяемого отношения. Никогда не пройдёт. По той простой причине, что при любой технологии сначала выполняется соединение, а уже потом появляются поля."

Полную статью могу выслать. Где брал ее - не помню...:)


 
Danilka ©   (2003-05-29 15:46) [17]

Johnmen © (29.05.03 15:44)
А мне статью эту можно?
Я еще новичек в IB, интересно почитать.


 
Соловьев ©   (2003-05-29 15:49) [18]

2 Johnmen
и мне статью можно?


 
Жук ©   (2003-05-29 16:03) [19]


> Johnmen © (29.05.03 15:44)

Про глупости интересно, конечно почитать, но всё-таки хочется добить вопрос про таблы и ХП. Я привёл работающий запрос и результаты производительности, в которых показано, что при чтении всех данных были использованы индексы, кроме чтения из системной таблицы rdb$relation_constraints.
Это по-моему опровергает тезис о неиспользовании индексов для селектов из таблиц и ХП одновременно. Нес па ?

Если я не прав, то поправьте.

P.S. Статье буду рад. Мыло в моей анкете.


 
Danilka ©   (2003-05-29 16:22) [20]

Жук © (29.05.03 16:03)
Если не ошибаюсь, в твоем запросе awtor_knigi и nomer возвращают по одной записи, так?

Вот если-бы они возвращали с сотню записей, и участвовали в секциях where и order by, тогда-бы ты "прочуствовал" какие там индексы :))


 
Жук ©   (2003-05-29 16:30) [21]


> Danilka © (29.05.03 16:22)

Я и так могу это представить, а желание почуствовать отбило года 2 назад :-)

Здесь несколько другой случай.


 
Johnmen ©   (2003-05-29 17:19) [22]

>Всем заинтересованным

Нашел я ссылку ! Там много интересного !
http://www.krista.ru/ib/
А ссылку эту давал, по-моему, Alexandr ©


 
Zacho ©   (2003-05-29 19:02) [23]


> Жук © (29.05.03 16:03)

Так ты привел план не запроса, а ХП. И то, что в ХП используются индексы вовсе не говорит о том, что при соединении таблицы и выборки из ХП тоже используются индексы. Видишь разницу между выборкой в ХП и соединением в запросе результатов этой выборки с чем-то еще ?



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

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

Наверх




Память: 0.52 MB
Время: 0.017 c
3-83978
McSimm2
2003-05-29 08:27
2003.06.26
Размер поля


4-84851
Керик
2003-04-25 20:49
2003.06.26
Перемещение столбцов


14-84640
Тих
2003-06-09 22:43
2003.06.26
Key-value редактор a la Object Inspector


1-84159
Недавно начал
2003-06-11 13:48
2003.06.26
PopupMenu & TreeView


7-84772
Smithson
2003-04-16 14:07
2003.06.26
Как определить права пользователя.