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

Откуда: Odessa
Сообщений: 92
Добрый день всем.
Вопрос такой кто знает точно или как это можно проверить.
допустим есть таблица SampleTable и мі запрос делаем в виде:

Select T1.column1,2,3...4 as  from SampleTable T1 LEFT OUTER JOIN SampleTable T2 ON 
T1.column1 = T2column1-1


Что происходит с памятью перед объединением - она выделяется дважды ? под каждый инстанс таблицы??
30 июл 12, 19:19    [12936800]     Ответить | Цитировать Сообщить модератору
 Re: Выделение памяти оптимизатором при объединении таблицы саму на себя  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
Andr___!
Что происходит с памятью перед объединением - она выделяется дважды ? под каждый инстанс таблицы??
Память выделяется просто для таблицы, для кеша. Оттуда берут данные все запросы, которым они нужны.

А для запроса может ещё выделяться дополнительная память. Можно как то это понять из текста запроса. Например, сервер сначала собирает по условиям ид или все поля из таблицы, а потом для каждого делает опять поиск в таблице по условию T1.column1 = T2column1-1
Вот для хранения отобранных записей и нужна дополнительная память.
30 июл 12, 19:43    [12936891]     Ответить | Цитировать Сообщить модератору
 Re: Выделение памяти оптимизатором при объединении таблицы саму на себя  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
alexeyvg
А для запроса может ещё выделяться дополнительная память. Можно как то это понять из текста запроса. Например, сервер сначала собирает по условиям ид или все поля из таблицы, а потом для каждого делает опять поиск в таблице по условию T1.column1 = T2column1-1
Вот для хранения отобранных записей и нужна дополнительная память.
Дополнительная память будет выделяться только если HASH JOIN будет в запросе, если же сервер выберет loop join для T1.column1 = T2column1-1, то доп. пямять потребуется минимальная.
30 июл 12, 20:28    [12937027]     Ответить | Цитировать Сообщить модератору
 Re: Выделение памяти оптимизатором при объединении таблицы саму на себя  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
Mind
alexeyvg
А для запроса может ещё выделяться дополнительная память. Можно как то это понять из текста запроса. Например, сервер сначала собирает по условиям ид или все поля из таблицы, а потом для каждого делает опять поиск в таблице по условию T1.column1 = T2column1-1
Вот для хранения отобранных записей и нужна дополнительная память.
Дополнительная память будет выделяться только если HASH JOIN будет в запросе, если же сервер выберет loop join для T1.column1 = T2column1-1, то доп. пямять потребуется минимальная.
Ага, для простого loop не нужно. В общем, это детали уже, например, сортировка может память потребовать...
30 июл 12, 21:08    [12937134]     Ответить | Цитировать Сообщить модератору
 Re: Выделение памяти оптимизатором при объединении таблицы саму на себя  [new]
Andr___!
Member

Откуда: Odessa
Сообщений: 92
alexeyvg
Mind
пропущено...
Дополнительная память будет выделяться только если HASH JOIN будет в запросе, если же сервер выберет loop join для T1.column1 = T2column1-1, то доп. пямять потребуется минимальная.
Ага, для простого loop не нужно. В общем, это детали уже, например, сортировка может память потребовать...


...ну детали ясны в принцепе.., интересовало имено изначальное выделение для всего объёма таблицы...
Спасибо.
31 июл 12, 10:06    [12938589]     Ответить | Цитировать Сообщить модератору
 Re: Выделение памяти оптимизатором при объединении таблицы саму на себя  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Нарушение принципа: вопрос "зачем?" должен возникать раньше.
Высказывание "она выделяется дважды" не проходит этот вопрос, на необходимость.
31 июл 12, 23:48    [12943724]     Ответить | Цитировать Сообщить модератору
 Re: Выделение памяти оптимизатором при объединении таблицы саму на себя  [new]
Andr___!
Member

Откуда: Odessa
Сообщений: 92
Mnior
Нарушение принципа: вопрос "зачем?" должен возникать раньше.
Высказывание "она выделяется дважды" не проходит этот вопрос, на необходимость.


Круто, как тонко вы меня подловили, никогда бы не подумал. Пря мо все изыски русской души показали...(надеюсь вы читали "ключевые отличия" американских и наших форумов..)
2 авг 12, 10:05    [12950368]     Ответить | Цитировать Сообщить модератору
 Re: Выделение памяти оптимизатором при объединении таблицы саму на себя  [new]
Andr___!
Member

Откуда: Odessa
Сообщений: 92
Mnior
Нарушение принципа: вопрос "зачем?" должен возникать раньше.
Высказывание "она выделяется дважды" не проходит этот вопрос, на необходимость.



На наших форумах наверное надо добавить новое правило пользования которое называлось бы "не умничать" а за попытки совершать подобное - банить ибо практической ценности подобные сообщения не несут. Вот человек создаёт же свой аккаунт на форуме для чегото - чтоб узнать что то новое либо помочь комуто узнать что то новое. Не хочешь ни того не другого - удаляй аккаунт и всё , свои же умные нервы тратить не будешь....)) Я в том плане что - человек написавший это в данном топике решил просто вставить свой пяточёк не принеся никому никакой пользы, хотя я например в его компетентности как специалиста не сомневаюсь. Так что ,Вы уважаемый,- пересмотрите своё мировоззрение в плане присутствия на этом сайте и у себя в первую очередь отыщите это "зачем".... может оно вам и не надо вовсе...
2 авг 12, 10:16    [12950419]     Ответить | Цитировать Сообщить модератору
 Re: Выделение памяти оптимизатором при объединении таблицы саму на себя  [new]
офигеть
Guest
дожили...
Andr___!
решил просто вставить свой пяточёк
2 авг 12, 13:43    [12952291]     Ответить | Цитировать Сообщить модератору
 Re: Выделение памяти оптимизатором при объединении таблицы саму на себя  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Andr___!
Mnior
Нарушение принципа: вопрос "зачем?" должен возникать раньше.
Высказывание "она выделяется дважды" не проходит этот вопрос, на необходимость.



На наших форумах наверное надо добавить новое правило пользования которое называлось бы "не умничать" а за попытки совершать подобное - банить ибо практической ценности подобные сообщения не несут. Вот человек создаёт же свой аккаунт на форуме для чегото - чтоб узнать что то новое либо помочь комуто узнать что то новое. Не хочешь ни того не другого - удаляй аккаунт и всё , свои же умные нервы тратить не будешь....)) Я в том плане что - человек написавший это в данном топике решил просто вставить свой пяточёк не принеся никому никакой пользы, хотя я например в его компетентности как специалиста не сомневаюсь. Так что ,Вы уважаемый,- пересмотрите своё мировоззрение в плане присутствия на этом сайте и у себя в первую очередь отыщите это "зачем".... может оно вам и не надо вовсе...
Не надо тут никого лечить. И не надо оффтопить. На форуме по MSSQL обсуждается проблемы, связанные с MSSQL, а не с форумом.
2 авг 12, 13:49    [12952338]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить