![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Select из ХП и таблицы в одном запросе [IB6.x]
Жук © (2003-05-29 11:49:00)Запрос :
select t.*,p.rez
from mtable t,mproc(input_par) p
order by p.rez
Сильно ли влияет отбор записей одновременно из таблицы и ХП на скорость выполнения запроса и индексацию ?
Zacho (2003-05-29 19:02:00) [1]
> Жук © (29.05.03 16:03)
Так ты привел план не запроса, а ХП. И то, что в ХП используются индексы вовсе не говорит о том, что при соединении таблицы и выборки из ХП тоже используются индексы. Видишь разницу между выборкой в ХП и соединением в запросе результатов этой выборки с чем-то еще ?
Johnmen (2003-05-29 17:19:00) [2]>Всем заинтересованным
Нашел я ссылку ! Там много интересного !
http://www.krista.ru/ib/
А ссылку эту давал, по-моему, Alexandr ©
Жук (2003-05-29 16:30:00) [3]
> Danilka © (29.05.03 16:22)
Я и так могу это представить, а желание почуствовать отбило года 2 назад :-)
Здесь несколько другой случай.
Danilka (2003-05-29 16:22:00) [4]Жук © (29.05.03 16:03)
Если не ошибаюсь, в твоем запросе awtor_knigi и nomer возвращают по одной записи, так?
Вот если-бы они возвращали с сотню записей, и участвовали в секциях where и order by, тогда-бы ты "прочуствовал" какие там индексы :))
Жук (2003-05-29 16:03:00) [5]
> Johnmen © (29.05.03 15:44)
Про глупости интересно, конечно почитать, но всё-таки хочется добить вопрос про таблы и ХП. Я привёл работающий запрос и результаты производительности, в которых показано, что при чтении всех данных были использованы индексы, кроме чтения из системной таблицы rdb$relation_constraints.
Это по-моему опровергает тезис о неиспользовании индексов для селектов из таблиц и ХП одновременно. Нес па ?
Если я не прав, то поправьте.
P.S. Статье буду рад. Мыло в моей анкете.
Соловьев (2003-05-29 15:49:00) [6]2 Johnmen
и мне статью можно?
Danilka (2003-05-29 15:46:00) [7]Johnmen © (29.05.03 15:44)
А мне статью эту можно?
Я еще новичек в IB, интересно почитать.
Johnmen (2003-05-29 15:44:00) [8]>Жук ©
"Ещё одна особенность, точнее на этот раз пожалуй даже глупость, которую периодически пытаются сделать новички. Ну например так:
select * from sp1(t.id) sp, test2 t
То есть в качестве параметра процедуры идёт одно из полей другого соединяемого отношения. Никогда не пройдёт. По той простой причине, что при любой технологии сначала выполняется соединение, а уже потом появляются поля."
Полную статью могу выслать. Где брал ее - не помню...:)
Жук (2003-05-29 15:25:00) [9]Запрос :
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.
Что бы это значило ?
Жук (2003-05-29 15:03:00) [10]
> Desdechado © (29.05.03 14:51)
Согласен.
Zacho (2003-05-29 14:54:00) [11]
> Desdechado © (29.05.03 14:51)
Вот это похоже на правду :-)
Desdechado (2003-05-29 14:51:00) [12]2 Zacho © (29.05.03 14:33)
приведенный план явно относился к содержимому ХП, а не к запросу
Жук (2003-05-29 14:42:00) [13]
> Johnmen © (29.05.03 14:27)
Просто зарезали. :-) Щас буду юзать эти объединения, пока сервер не уроню...
> Zacho © (29.05.03 14:33)
Наверное плохо рассмотрели. :-)
Zacho (2003-05-29 14:33:00) [14]
> Desdechado © (29.05.03 14:21)
> Johnmen © (29.05.03 14:27)
Так я и думал. И мои эксперименты это подтверждали. Но меня сбил с толку план, приведенный Жук © в http://www.delphimaster.ru/cgi-bin/forum.pl?look=1&id=1053950176&n=3
Или я как-то неправильно этот план понял ? Или просто плохо его рассмотрел ? :-)
Johnmen (2003-05-29 14:27:00) [15]Как показывают экперименты, при таких соединениях (таблица с ХП) индексы НЕ ИСПОЛЬЗУЮТСЯ ! Что понятно.
Используется альтернативное соединение MERGE для предварительно отсортированных потоков (SORT), что и видно в плане выполнения запроса.
Вот такая коротенькая имха...:)))
Desdechado (2003-05-29 14:21:00) [16]На форуме interbase-world промелькнула инфа, что Firebird 1.5 уже умеет объединять результат ХП с таблицами по индексу. Насколько эффективно - не знаю.
Ну а остальные - традиционно нет.
А в запросе автора ветки объединения нет, поэтому будет простое декартово произведение, в котором исп-е индексов бессмысленно.
Ну и "индексация" - это ПРОЦЕСС СОЗДАНИЯ (или поддержания) индекса, а не его использования ...
Жук (2003-05-29 14:01:00) [17]2 Johnmen
Евгений ! Вся надежда на вас !!!
Zacho (2003-05-29 13:30:00) [18]Собственно, насколько я понимаю, в основном вопрос заключается в том: используются ли индексы для соединениятаблицы и результатов, возвращяемых хранимой процедурой в запросах типа SELECT ... FROM TABLE JOIN SP ON ..
Я всегда считал, что нет, но что-то засомневался :-) Кто нибудь может аргументированно объяснить ?
Жук (2003-05-29 13:28:00) [19]
> Johnmen © (29.05.03 13:20)
> Слишком неконкретные исходные данные для нормального ответа...:)
Сам вижу. Попробую сформулировать. Вот :
Romkin © (28.05.03 12:28)
А вот соединять в запросе таблицу и ХП - очень дурной тон... Мне, например, такого соединения никогда не надо было.
Далее :
Danilka © (29.05.03 09:04)
дурной тон потому-что соединение будет native, индексы не будут использоваться.
Верно ли всё это ?
Johnmen (2003-05-29 13:20:00) [20]Слишком неконкретные исходные данные для нормального ответа...:)