Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
НовыйЯ
Member

Откуда:
Сообщений: 193
Отдельно про них читаешь, всё вроде бы понятно.
Но есть ли где-то подробное их сопоставление по пунктам?
Принцип хранения, область видимости, максимальный объём, индексирование и, главное, тонкости применения того или иного варианта?

У новичка может крышу снести от такого изобилия.
Ну, допустим, вьюхи позволяют ограничить набор видимых клиентом полей, также могут быть индексированными и хранятся в виртуальной память, позволяя повысить производительность.

CTE вообще как-то по-хитрому с памятью работает, но есть ограничение на использование (только вместе с последующим запросом, который его применят).

И так далее.

Есть ли где-то нормально собранная информация с инструкцией для применения или хотя бы чтоб в голове нормально уложить по пунктам?
19 авг 12, 16:20    [13033400]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 910
НовыйЯ
Отдельно про них читаешь, всё вроде бы понятно.
Но есть ли где-то подробное их сопоставление по пунктам?
Принцип хранения, область видимости, максимальный объём, индексирование и, главное, тонкости применения того или иного варианта?

У новичка может крышу снести от такого изобилия.
Ну, допустим, вьюхи позволяют ограничить набор видимых клиентом полей, также могут быть индексированными и хранятся в виртуальной память, позволяя повысить производительность.

CTE вообще как-то по-хитрому с памятью работает, но есть ограничение на использование (только вместе с последующим запросом, который его применят).

И так далее.

Есть ли где-то нормально собранная информация с инструкцией для применения или хотя бы чтоб в голове нормально уложить по пунктам?


Конечно есть - BOL
19 авг 12, 16:38    [13033448]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
НовыйЯ
Member

Откуда:
Сообщений: 193
flexgen
НовыйЯ
Отдельно про них читаешь, всё вроде бы понятно.
Но есть ли где-то подробное их сопоставление по пунктам?
Принцип хранения, область видимости, максимальный объём, индексирование и, главное, тонкости применения того или иного варианта?

У новичка может крышу снести от такого изобилия.
Ну, допустим, вьюхи позволяют ограничить набор видимых клиентом полей, также могут быть индексированными и хранятся в виртуальной память, позволяя повысить производительность.

CTE вообще как-то по-хитрому с памятью работает, но есть ограничение на использование (только вместе с последующим запросом, который его применят).

И так далее.

Есть ли где-то нормально собранная информация с инструкцией для применения или хотя бы чтоб в голове нормально уложить по пунктам?


Конечно есть - BOL

Я рад, что Вы тоже открыли для себя MSDN.

К сожалению, он не заменит опыта работы :(
19 авг 12, 16:46    [13033464]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
НовыйЯ
flexgen
пропущено...


Конечно есть - BOL

Я рад, что Вы тоже открыли для себя MSDN.

К сожалению, он не заменит опыта работы :(
Вы свой мозг заменить хотите что ли?
Чтобы новый с опытом работы был?
19 авг 12, 16:53    [13033477]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
НовыйЯ
Member

Откуда:
Сообщений: 193
iap
НовыйЯ
пропущено...

Я рад, что Вы тоже открыли для себя MSDN.

К сожалению, он не заменит опыта работы :(
Вы свой мозг заменить хотите что ли?
Чтобы новый с опытом работы был?

Правил что-то в процедуре своего коллеги с опытом работы более 10 лет, спросил, почему он использует #table, а не @table или CTE, так тот ответил "какая нахрен разница? Если такой любознательный, залезь в мсдн".

Так что опыт опыту рознь.
Кто-то пытается понять, что дн делает, а кому-то достаточно понимания факта существования на свете МСДНа и худо-бедно работающего кода.
19 авг 12, 17:08    [13033507]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
aleks2
Guest
НовыйЯ
CTE вообще как-то по-хитрому с памятью работает, но есть ограничение на использование (только вместе с последующим запросом, который его применят).


Утешим новичка?

1. CTE работает точно также как любые запросы. Это только лишь "форма записи", которую оптимизатор разворачивает в обычный запрос.

2. Рекурсивное CTE работает немного иначе. Но тут главное знать: а) никогда не надо применять Рекурсивное CTE; б) если никак не получается без Рекурсивного CTE - см. п. а).
19 авг 12, 17:25    [13033535]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
НовыйЯ
Member

Откуда:
Сообщений: 193
aleks2
НовыйЯ
CTE вообще как-то по-хитрому с памятью работает, но есть ограничение на использование (только вместе с последующим запросом, который его применят).


Утешим новичка?

1. CTE работает точно также как любые запросы. Это только лишь "форма записи", которую оптимизатор разворачивает в обычный запрос.

2. Рекурсивное CTE работает немного иначе. Но тут главное знать: а) никогда не надо применять Рекурсивное CTE; б) если никак не получается без Рекурсивного CTE - см. п. а).

Так значит это миф о лучшей производительности CTE?
Это не более, чем удобная форма записи?
19 авг 12, 17:41    [13033567]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 910
НовыйЯ
Я рад, что Вы тоже открыли для себя MSDN.


Такой молодой а уже такой хамовитый. :-)
Никто Вам свою голову с готовыми знаниями не пересадит, так что, как говорили во времена моей молодости - RTFM.
19 авг 12, 17:50    [13033579]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
НовыйЯ
Member

Откуда:
Сообщений: 193
flexgen
НовыйЯ
Я рад, что Вы тоже открыли для себя MSDN.


Такой молодой а уже такой хамовитый. :-)
Никто Вам свою голову с готовыми знаниями не пересадит, так что, как говорили во времена моей молодости - RTFM.

Ну, на нет и суда нет, как говорила моя бабушка :)
19 авг 12, 17:59    [13033595]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
НовыйЯ
Так значит это миф о лучшей производительности CTE?
Это не более, чем удобная форма записи?
Да, и вместо CTE можно использовать подзапросы.
Ничего в CTE особо производительного нету.

Ещё CTE добавляет функциональность (рекурсивный подзапрос), который обычными подзапросами не сделать.
НовыйЯ
Правил что-то в процедуре своего коллеги с опытом работы более 10 лет, спросил, почему он использует #table, а не @table или CTE, так тот ответил "какая нахрен разница? Если такой любознательный, залезь в мсдн".
Либо он не любит делаться знаниями, либо сам не понимает. Придётся ему быть вечным кодером :-(
19 авг 12, 21:17    [13034118]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
CTE - сахар, и ничего более. Разве что рекурсивное оно, да и то довольно спорно.
19 авг 12, 21:33    [13034175]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
Читатель неместный
Guest
alexeyvg
Придётся ему быть вечным кодером :-(

это вот о чем?
не пробиться ему в админы или в начальники? )
к чему это я... поубивав бы своих админов нафиг.

и как совет пофигиста (уже) неумелого неумелому
-используй временные таблицы - на записях больше ста они выигрывают
-да любое сте (с разумной поддержкой вложенности) можно реализовать простыми запросами
-в минимальной форме ознакомиться индексами и добиваться их участия в планах
-вьюшка + вьюшка + вьюшка = почти всегда это смерть от непонятных причин
-участие табличной функции во вьюшке - тоже туда же
вот минимум чего я придерживаюсь
19 авг 12, 21:57    [13034257]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
табличные переменные
Guest
А табличные переменные?
19 авг 12, 22:26    [13034349]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
Читатель неместный
Guest
табличные переменные
А табличные переменные?
если есть выбор и записей там может быть больше 100, то временные таблицы.
Ну если это в цункциях, то нужно очень сильно посмотреть в сторону переделки оной в процедуру
19 авг 12, 22:34    [13034359]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
НовыйЯ
Member

Откуда:
Сообщений: 193
табличные переменные
А табличные переменные?

Как я для себя понял, они хранятся не в темпдб, а в памяти (до определённого предела), и являются более оптимальными по производительности, чем временные таблицы при небольших объёмах данных.
Но их нельзя индексировать, как временные или вьюхи, а при больших размерах лучше отдавать предпочтения временным.
19 авг 12, 22:42    [13034375]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
Читатель неместный
Guest
НовыйЯ
табличные переменные
А табличные переменные?

Как я для себя понял, они хранятся не в темпдб, а в памяти (до определённого предела), и являются более оптимальными по производительности, чем временные таблицы при небольших объёмах данных.
Но их нельзя индексировать, как временные или вьюхи, а при больших размерах лучше отдавать предпочтения временным.

не совсем... малые таблицы тоже полностью в памяти могут быть и большие переменные тоже могут лечь в темдб (наверно)
для табличных переменных "в журналы не пишутся данные", поэтому они быстрее при малых объемах...
да и обоснования этого я не искал - чисто по статистике (своей)
19 авг 12, 22:56    [13034403]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
НовыйЯ
Но их нельзя индексировать, как временные или вьюхи
Чо это? Вы просто не умеете их готовить.
19 авг 12, 22:57    [13034408]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
НовыйЯ
Member

Откуда:
Сообщений: 193
Гавриленко Сергей Алексеевич
НовыйЯ
Но их нельзя индексировать, как временные или вьюхи
Чо это? Вы просто не умеете их готовить.

А что, можно разве?
Да и нужно ли навешивать индексы, туда, куда всё равно объёмов больших не запихнёшь?
19 авг 12, 23:09    [13034431]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
НовыйЯ
Гавриленко Сергей Алексеевич
пропущено...
Чо это? Вы просто не умеете их готовить.

А что, можно разве?
primary key кляуза + identity-поле = хоть уникальный, хоть неуникальный индекс. Нужно ли? Вопрос другой, если не холиварный.

Сообщение было отредактировано: 19 авг 12, 23:11
19 авг 12, 23:11    [13034443]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
НовыйЯ
Member

Откуда:
Сообщений: 193
Гавриленко Сергей Алексеевич
НовыйЯ
пропущено...

А что, можно разве?
primary key кляуза + identity-поле = хоть уникальный, хоть неуникальный индекс. Нужно ли? Вопрос другой, если не холиварный.

А, это в том смысле, что индексы неявно создаются при вводе ограничений?
Это да, понятно.
Я о ручном создании экзотических индексов путём create index...
19 авг 12, 23:14    [13034454]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
временных в журнал
Guest
Читатель неместный
НовыйЯ
пропущено...

Как я для себя понял, они хранятся не в темпдб, а в памяти (до определённого предела), и являются более оптимальными по производительности, чем временные таблицы при небольших объёмах данных.
Но их нельзя индексировать, как временные или вьюхи, а при больших размерах лучше отдавать предпочтения временным.

не совсем... малые таблицы тоже полностью в памяти могут быть и большие переменные тоже могут лечь в темдб (наверно)
для табличных переменных "в журналы не пишутся данные", поэтому они быстрее при малых объемах...
да и обоснования этого я не искал - чисто по статистике (своей)

А для временных таблиц разве пишутся в журнал данные?
19 авг 12, 23:30    [13034514]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
PK - и не уникальный?
Guest
Гавриленко Сергей Алексеевич
НовыйЯ
пропущено...

А что, можно разве?
primary key кляуза + identity-поле = хоть уникальный, хоть неуникальный индекс. Нужно ли? Вопрос другой, если не холиварный.

А без identity не создаст и как это PK - и не уникальный?
19 авг 12, 23:32    [13034517]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
PK - и не уникальный?
Гавриленко Сергей Алексеевич
пропущено...
primary key кляуза + identity-поле = хоть уникальный, хоть неуникальный индекс. Нужно ли? Вопрос другой, если не холиварный.

А без identity не создаст и как это PK - и не уникальный?
Создаст. А подумать?

Сообщение было отредактировано: 19 авг 12, 23:36
19 авг 12, 23:36    [13034528]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
Читатель неместный
Guest
временных в журнал
А для временных таблиц разве пишутся в журнал данные?
в журнал, в лог или куда ещё не знаю, но кудато "точно вроде" пишутся ..стопудов))
19 авг 12, 23:40    [13034539]     Ответить | Цитировать Сообщить модератору
 Re: Вьюхи, @table, (#)#table, cte - бошка кругом  [new]
invm
Member

Откуда: Москва
Сообщений: 9913
НовыйЯ,

Comparing Table Variables with Temporary Tables
20 авг 12, 00:03    [13034588]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить