Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Обращение к юзерским функциям из запросов
|
|||
|---|---|---|---|
|
#18+
Есть функция, которая возвращает список сотрудников отдела теперь я хочу использовать её в запросе select ... from ... where ... fam in (select fam from dbo.OTDEL(@num) ) ... and ... имеет ли смысл выносить содержимое in во временную таблицу Собствеенно вопрос в том на сколько тяжеловесно использование временных таблиц. Правда ли что если вынести функцию предварительно в таблицу то select из этой таблицы быдет кэширован,а при использованиии чисто функции нет. Есть ли какие то минусы при использовании временных таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2002, 07:11 |
|
||
|
Обращение к юзерским функциям из запросов
|
|||
|---|---|---|---|
|
#18+
Приветствую Мне кажется, что оптимально использовать (в порядке убывания скорости выполнения) 1. Inline-функцию 1. Постоянную таблицу-кэш (нужно будет чистить периодически) 2. Переменную типа TABLE (можно "поиграть" с PRIMARY KEY для этой переменной) 3. Временную таблицу Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2002, 10:54 |
|
||
|
Обращение к юзерским функциям из запросов
|
|||
|---|---|---|---|
|
#18+
спасибо но не понятно почему переменная типа table медленнее функции ведь на сколько я понимаю функция вычисляеться для каждой записи таблицы из которой достаём данные и чем временная таблица отличаеться от пременной типа table вариант с постоянной таблицей не подходит потому что набор данных меняються очень часто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2002, 12:21 |
|
||
|
Обращение к юзерским функциям из запросов
|
|||
|---|---|---|---|
|
#18+
ведь на сколько я понимаю функция вычисляеться для каждой записи таблицы из которой достаём данные Inline-функцию вообще-то должна возвращать набор и использоваться как набор, поэтому о каком вычислении для каждой записи вы говорите ? Scalar-функции - другое дело, но логично ли их сравнивать с переменными типа таблица или временными таблицами ? и чем временная таблица отличаеться от пременной типа table Временная таблица - это все таки таблица, т.е. в принципе нормальный объект Переменная - это кусок оперативной памяти Если говорить про функциональность, то самое важное IMHO это то, что все переменные в SQL - локальные, т.е. не видны, например, в вызываемых процедурах(и к тому же переменная типа таблица нельзя передавать как параметр), в отличии от временных таблиц Правда ли что если вынести функцию предварительно в таблицу то select из этой таблицы быдет кэширован,а при использованиии чисто функции нет. Кэширование данных - это механизм хранения в памяти данных, физически расположенных на диске. Конечно ни о каком кэшировании UDF, как набора данных не может быть и речи (таблицы из которых UDF выбирает данные - другое дело). Или вы про процедурный кэш ? ЗЫ А вообще-то сравнение конкретных планов запросов с/без UDF/временными таблицами/переменными наверное поможет больше, т.к. все типы объектов имеют "право на жизнь" и могут в конкретном случае оказаться лучшим выбором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2002, 06:58 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32026597&tid=1823275]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
184ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 269ms |
| total: | 546ms |

| 0 / 0 |
