Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
Подскажите, пожалуйста, есть ли значимые предпочтения между сбором результата промежуточного select во временную таблицу или в табличную переменную? Если безотносительно зоны видимости и времени существования, то есть без учёта этих факторов ... Код: sql 1. или Код: sql 1. Как лучше? Или очень ли плохо собирать именно во временную таблицу, хотя использоваться она будет локально в одном скрипте, а по его завершению удаляться? Мне "организационно" удобнее использовать временные таблицы, но если так "невынужденно" дёргать диск это совсем-совсем плохо, то переделаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2019, 23:48 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
rtvПодскажите, пожалуйста, есть ли значимые предпочтения между сбором результата промежуточного select во временную таблицу или в табличную переменную? Если безотносительно зоны видимости и времени существования, то есть без учёта этих факторов ... Код: sql 1. или Код: sql 1. Как лучше? Или очень ли плохо собирать именно во временную таблицу, хотя использоваться она будет локально в одном скрипте, а по его завершению удаляться? Мне "организационно" удобнее использовать временные таблицы, но если так "невынужденно" дёргать диск это совсем-совсем плохо, то переделаю А что, из вами приведенного, является "табличной переменной"? Уж не "as" ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2019, 00:31 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
msLexА что, из вами приведенного, является "табличной переменной"? Уж не "as" ли? Ага, оно - "as" ли :)) Но Вы же догадались о чём я? Не знаю, что это и как называется. Плохо, понимаю. Показалось похоже на переменную, и что "оно" in memory. Но это не снимает вопрос, а усиливает, подчёркивая уровень вопрошающего. Чем бы оно ни было, это "as" ли :)) - мне к нему повторно обращаться не нужно. (Хотя если кто-нибудь скажет, что это, будет полезно) Так вот когда к временной выборке повторно обращаться не нужно, она сразу после отработки скрипта будет удаляться, будет ли при этом сильно плохо использовать select into? Или это ни для чего особо не критично? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2019, 02:43 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
просто именованная выборка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2019, 03:23 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
rtv, В первом случае вы вставляете данные (набор данных) во временную таблицу, во втором вы ничего кроме переименования одной колонки не делаете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2019, 04:01 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
PizzaPizzartv, В первом случае вы вставляете данные (набор данных) во временную таблицу, во втором вы ничего кроме переименования одной колонки не делаете Да, только не колонки, а выборки. И вот вопрос в том, очень ли плохо использовать временные таблицы, в случае когда можно обойтись и без них, а временные таблицы просто удобнее при организации внешнего программного кода. И конкретно - у меня сейчас в запросе используется условно такая конструкция Код: sql 1. 2. 3. По ряду внешних соображений хочется это переписать с использованием временной таблицы. Переписать можно, но вдруг такое решение будет очевидно хуже по каким-то неизвестным мне соображениям, может заведомо медленнее, может зря диск дёргать плохо, еще чего-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2019, 04:41 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
rtvДа, только не колонки, а выборки. as = это алиасинг В блоке SELECT это алиасинг для колон ки В блоке FROM для выборки rtvочень ли плохо использовать временные таблицы Любые вещи нужно использовать по назначению, т.е. если они нужны. Зачем вам временная таблица? Если вам просто хочется это переписать без цели использования функционала, который предоставляют временные таблицы, то это конечно будет очевидно хуже просто потому, что вы увеличиваете нагрузку на сервер "просто так" и, по видимому, не очень понимаете что делаете и зачем. Достаточно посмотреть на план выполнения запросов и статистику и сразу увидите разницу, которую надо (обычно причинами помимо "хочется переписать") обосновать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2019, 05:22 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
rtv, Опять же, select into выполняет эту конкретную операцию select выдает вам результирующую выборку это две совершенно разные задачи и вы спрашиваете какая из них "лучше"... Если вам надо таки получить выборку, то вам придется делать select в дополнение к select into. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2019, 05:29 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
rtv, табличная переменная - это не то, о чем Вы думаете. Выбор того или иного решения зависит от его эффективности. Эффективность проверяется практическим опытом. В вашем случае оба решения равноправны и зависят от конкретной ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2019, 12:40 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
rtv, Это называется "derived table" и никакого отношения к временным таблицам или переменным не имеет. Временная таблица или табличная переменная - это вполне реаьная материальная таблица в tempdb, а derived table это просто синтаксическая конструкция в запросе - никаких физических таблиц, как и при использовании CTE, при её использовании не создается. Если есть возможность использовать derived table или CTE, то надо использовать их, т.к. это даст больше простора оптимизатору поработать над твоим запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2019, 13:08 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
fkthatrtv, Это называется "derived table" и никакого отношения к временным таблицам или переменным не имеет. Временная таблица или табличная переменная - это вполне реаьная материальная таблица в tempdb, а derived table это просто синтаксическая конструкция в запросе - никаких физических таблиц, как и при использовании CTE, при её использовании не создается. fkthat, Спасибо! PizzaPizzaЛюбые вещи нужно использовать по назначению, т.е. если они нужны. Зачем вам временная таблица? fkthatrtv, Если есть возможность использовать derived table или CTE, то надо использовать их, т.к. это даст больше простора оптимизатору поработать над твоим запросом. В большом select используется некая промежуточная выборка, организованная как "derived table". Сейчас нужно, по условиям использовать в этом месте разные выборки. Вроде как напрашивается введение переменной. С точки зрения моего внешнего кода (Delphi) именно так было бы правильно. И вот встал вопрос, насколько это будет хуже относительно уже кода sql. Ну по итогам обсуждения "моё подозрение" подтвердилось - нагрузку на сервер "просто так" - это плохо, у оптимизатора будет меньше свободы, тоже плохо. А поскольку я пишу в Delphi мне не надо будет усложнять запрос ещё и этим условием на разные выборки. Я без проблем динамически сформирую разные запросы по каждому условию для этих промежуточных выборок. Временные таблицы всего лишь повысили бы мне читабельность моего дельфийского кода, но это не аргумент. Всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2019, 14:04 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
fkthatа derived table это просто синтаксическая конструкция в запросе - никаких физических таблиц, как и при использовании CTEНу как сказать... Сервер использует tempdb и в этих случаях при необходимости. Может, таблицей это и назовёшь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2019, 17:26 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
rtvВ большом select используется некая промежуточная выборка, организованная как "derived table". Сейчас нужно, по условиям использовать в этом месте разные выборки. Вроде как напрашивается введение переменной. С точки зрения моего внешнего кода (Delphi) именно так было бы правильно. И вот встал вопрос, насколько это будет хуже относительно уже кода sql. Ну по итогам обсуждения "моё подозрение" подтвердилось - нагрузку на сервер "просто так" - это плохо, у оптимизатора будет меньше свободы, тоже плохо.Бывает по разному, нужно принимать решение, смотря на конкретную ситуацию. Чаще всего не имеет смысла "материализовать" подзапрос, с помощью предварительной выборки во временную таблицу. Но иногда, если подзапрос выбирает данные по сложным условиям, и в результате выбирает не особенно много данных, а потом из этой выборки джелается много других выборок, так будет эффективнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2019, 17:43 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
rtv Временные таблицы всего лишь повысили бы мне читабельность моего дельфийского кода, но это не аргумент. Читаемость кода это СТЕ. Прочитайте про них. Они никак не влияют на фактическое выполнение запроса, а только на его отображение - на текст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2019, 17:48 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
alexeyvgЧаще всего не имеет смысла "материализовать" подзапрос, с помощью предварительной выборки во временную таблицу. Но иногда, если подзапрос выбирает данные по сложным условиям, и в результате выбирает не особенно много данных, а потом из этой выборки делается много других выборок, так будет эффективнее. Да, вот последнее очень похоже на мой случай... PizzaPizzartv Временные таблицы всего лишь повысили бы мне читабельность моего дельфийского кода, но это не аргумент. Читаемость кода это СТЕ. Прочитайте про них. Они никак не влияют на фактическое выполнение запроса, а только на его отображение - на текст. Спасибо. Читаю. Полезно. Но я то про другое вообще, про дельфийский код, который к этому разделу отношения не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2019, 19:30 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
rtv, в вашем случае читаемость повысила бы "инкапсуляция" кода SQL в процедуру и ее вызов из программы на Delphi. А в самой процедуре уже хоть временные таблицы, хоть табличные переменные, хоть табличные функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2019, 10:19 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
Руслан Дамировичrtv, в вашем случае читаемость повысила бы "инкапсуляция" кода SQL в процедуру и ее вызов из программы на Delphi. А в самой процедуре уже хоть временные таблицы, хоть табличные переменные, хоть табличные функции. Процедуру на сервере? Нет, это не "наш случай", к сожалению. У нас код правится постоянно (сверху поступают новые регламенты в режиме потока сознания), такая жизнь ;). А оперативность внесения изменений в приложение выше, чем на сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2019, 14:05 |
|
||
|
временная таблица или табличная переменная, что предпочтительнее
|
|||
|---|---|---|---|
|
#18+
rtvА оперативность внесения изменений в приложение выше, чем на сервер.Странно. Обычно главный (да что там, часто едиенственный) мотив переноса запросов в хранимые процедуры - скорость и простота внесения изменений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2019, 18:35 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39821226&tid=1687741]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 224ms |
| total: | 383ms |

| 0 / 0 |
