Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.026 c
3-83916
Мария В.
2003-06-03 15:08
2003.06.26
Сортировка таблицы с данными на украинском языке


14-84563
Navi
2003-06-07 07:20
2003.06.26
Психологический тест


3-83875
malefik
2003-06-02 16:36
2003.06.26
Многопоточность в приложениях баз данных...


14-84609
race1
2003-06-09 13:11
2003.06.26
m->wm


3-83925
Silver_
2003-06-03 12:15
2003.06.26
if CurrentRecord.IsLocked(ByOtherUser) then...





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