Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Непонятки с планом  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
Добрый день!
Решил начать изучать планы.
Сразу непонятки. Есть запрос такой:
SELECT --BP.[IDBP] AS 'ID',
       BP.[Name] AS 'Наименоване команды',
       BP.[NameFull] AS 'Полное наименование',
       BP.[CodeName] AS 'Кодовое наименование',
       BP.[Annotation] AS 'Аннотация',
       --BP.IDBPDeclareType,
       BPT.[BPDeclareTypeName] AS 'Тип команды',
       U.FullName AS 'Разработчик',
       kbIS.ISName AS 'Подсистема',
       E.NameTypeIO AS 'Сущность',
       F.FuncName AS 'Системная процедура',
       BP.[IDBrowserUpdater],
       --BP.[IDDataBlockParamInit],
       B.DataBlockNameRus AS 'Датаблок инициализации',
       BP.[IDUpdater],
       BP.[IDSubSystemFunc],
       BP.[IsDataTable],
       BP.[DefaultAllowAccess],
       BP.[WebPageOnForm],
       BP.[Sys],
       BP.[QuestionOnStart],
       BP.[MessageOnEnd],
       BP.[CreateDate],
       BP.[QuestionOnStartText],
       BP.[MessageOnEndText],
       BP.[IdBPTypeClass],
       BP.[IDModifier],
       BP.[ModifyDate],
       BP.[ModifyLogin],
       BP.[UpdaterRunOnce]
FROM [KB].[dbo].[BPDeclare] BP
LEFT JOIN kbIS ON BP.IdIS=kbIS.IdIS
LEFT JOIN kbTypeIO E ON E.IdTypeIO=BP.IdTypeIO
LEFT JOIN Users U ON U.IDUser=BP.IDAuthor 
LEFT JOIN BPDeclareType BPT ON BPT.IDBPDeclareType=BP.IDBPDeclareType
LEFT JOIN Func F ON BP.IDSysProc=F.IDFunc
LEFT JOIN DataBlock B ON B.IDDataBlock=BP.IDDataBlockParamInit


Получаю план (кусок справа на рисунке). Почему LEFT JOIN kbIS ON BP.IdIS=kbIS.IdIS на плане идёт как RIGHT JOIN?
MS SQL 2008.

К сообщению приложен файл. Размер - 22Kb
22 май 12, 14:54    [12595055]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с планом  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
defragmentator,

ну так T1 LEFT JOIN T2 = T2 RIGHT JOIN T1, в плане же первой таблицей джойна показана dbo.kbIS
22 май 12, 15:00    [12595098]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с планом  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
Блин, сиквел тупой, не мог что ли правильно расположить?
22 май 12, 15:05    [12595135]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с планом  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
defragmentator
Блин, сиквел тупой, не мог что ли правильно расположить?

а какая разница?
с точки зрения результата запроса конечно. Он располагает так, как ему кажется оптимальнее
22 май 12, 15:08    [12595167]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с планом  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
Если в этом есть глубокий смысл, то конечно. Таблица kbIS короче, чем BP.
К тому же kbIS.IdIS - это ключ, а BP.IdIS - нет
22 май 12, 15:13    [12595199]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с планом  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
Почитайте как hash join работает, что за фазы build и probe, что такое probe table.

автор
К тому же kbIS.IdIS - это ключ, а BP.IdIS - нет

И что вы этим хотели сказать?
22 май 12, 15:19    [12595250]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с планом  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
defragmentator
Если в этом есть глубокий смысл, то конечно. Таблица kbIS короче, чем BP.
К тому же kbIS.IdIS - это ключ, а BP.IdIS - нет

Наверху при хешджойне располагается таблица проб, а внизу таблица для тестирования. Таблица проб должна быть меньше таблицы тестирования, это такая особенность соединения хешированием. Вот оптимизатор и поменял порядок
22 май 12, 15:19    [12595257]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с планом  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
defragmentator
Блин, сиквел тупой, не мог что ли правильно расположить?
Если вы думаете что умнее сиквела и очень хотите показать кто тут главный, то смело включайте 
OPTION (FORCE ORDER)
и тогда таблицы будет именно в том порядке который указан в запросе.
23 май 12, 03:59    [12598130]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с планом  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
defragmentator
Решил начать изучать планы.

defragmentator
Есть запрос такой


Вы очень, очень торопитесь. При начале изучения планов запрос должен умещаться в одну строку, а не в пол-экрана как у вас. Если думаете - это слишком просто, не волнуйтесь, скучать не придется. Только над элементарным оператором джойна можно пол-дня провести, изучая его так и эдак. А их разных - 3 штуки. А комбинаций их - считайте сами. А ведь джойнами дело не ограничивается... В частности, ваше эмоциональное высказывание и переход на личности :) показывают что вы, пока, не владаете физикой работы оператора Hash Match.

defragmentator
Блин, сиквел тупой,


А так же следует взять за правило - решения оптимизатора в 99% верны, даже если кажутся нелогичными. Оптимизатор запросов именно SQL Server силен до чрезвычайности, необсуждаемый №1 в индустрии, правда ему неизвестен термин "удобство чтения кода", это да. Но в частности в вашем примере таблицы расположены совершенно верно, вы же хотите что бы запрос исполнился максимально быстро, не правда ли? Так что кто/что там "тупой" - судите сами...

Mind
то смело включайте


Это можно. Но, если речь идет не именно об изучении отдельных операторов плана - лучше не надо.
23 май 12, 10:08    [12598662]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с планом  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
SamMan
Вы очень, очень торопитесь. При начале изучения планов запрос должен умещаться в одну строку, а не в пол-экрана как у вас. Если думаете - это слишком просто, не волнуйтесь, скучать не придется. Только над элементарным оператором джойна можно пол-дня провести, изучая его так и эдак. А их разных - 3 штуки. А комбинаций их - считайте сами.


А работать кто будет ?:)
У меня запросы меньше, чем на полстраницы редко бывают
23 май 12, 10:46    [12599008]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с планом  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
defragmentator
А работать кто будет ?:)


Ну тут уж либо-либо. Еще вариант - забить на сон. :) А вообще, постижение планов, это, ИМХО, самое "времясжигающее" знание. Что бы обрести 0.1 грамм знаний в этой области нужно потратить 3 тонны времени. Недаром людей владеющей этой "магией" на действительно глубоком уровне - единицы.

defragmentator
У меня запросы меньше, чем на полстраницы редко бывают


Вы сразу к реальным запросам перешли, что ли?? Ну тогда вы планы не изучаете, так - просматриваете, в лучшем случае. С чего начинается изучение написал выше.
23 май 12, 11:38    [12599502]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с планом  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
defragmentator
У меня запросы меньше, чем на полстраницы редко бывают
Use Views, Luke

И не вижу имена схем (dbo) в перечислении таблиц (представлений).
23 май 12, 12:17    [12599952]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с планом  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
SamMan,

я уже давно не студент, лет так -дцать
23 май 12, 13:35    [12600799]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с планом  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
defragmentator
я уже давно не студент, лет так -дцать


Да хоть вы IT/SQL-профессором будьте, а изучение планов начинается (если именно это ваша цель) с однострочных запросов, точка. Точно так же, как изучение вождения начинается с какой-нить развалюхи типа ВАЗ-2101, но никак не с карьерного самосвала. Будет вам и самосвал, но - в свое время.
23 май 12, 20:01    [12604216]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с планом  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
defragmentator
SamMan,

я уже давно не студент, лет так -дцать
Сей факт не даст вам автоматически знаний по планам запросов.
23 май 12, 20:47    [12604391]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с планом  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
SamMan,

честно говоря, начинал не с 2101, а с 21011:)
24 май 12, 10:23    [12606021]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить