Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
alex-ttt
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 2
#1

Оптимизация вычислений нескольких вычисляемых полей в таблице - SQL Server

20.09.2016, 07:02. Просмотров 315. Ответов 4
Метки нет (Все метки)

Имеется таблица tbl_Group с полями Id, calc_0, calc_1, calc_2, calc_3, ... , calc_5

В этой таблице, согласно названию полей, все, кроме Id является вычисляемым и ссылается на соответствующие функции f_0, f_1, ... , f_5

Каждая функция обращается к таблице (на самом деле табличной функции от Id группы - строки tbl_Groups) fnc_Items и отображает количество элементов в таблице по различным условиям. То есть примерно это выглядит так:

f_0:
T-SQL
1
SELECT COUNT(*) FROM tbl_Items
f_1:
T-SQL
1
2
SELECT COUNT(*) FROM fnc_Items 
WHERE x > 0
f_2:
T-SQL
1
2
SELECT COUNT(*) FROM fnc_Items 
WHERE x BETWEEN 31 AND 60
и так далее.

Таким образом мы получаем, что для того, чтобы выбрать одну строку из таблицы tbl_Group, нам необходимо обратиться к 6-ти разным функциям, которые в свою очередь 6 раз получат таблицу из функции fnc_Items чтобы применить к ней своё условие.

Вопрос заключается в том, можно ли использовать какой либо механизм кэширования или оптимизации, чтобы вызывать на одну строку в селекте таблицу fnc_Items 1 раз, а уже к результату выбора обращаться 6 раз, а не все время пересчитывать табличную функцию на каждое вычисляемое поле.

Используется MSSQL Server 2012, Transact-SQL
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2016, 07:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Оптимизация вычислений нескольких вычисляемых полей в таблице (SQL Server):

Округление вычисляемых полей
Здравствуйте. Использую SQL 2005 Допустим у меня есть таблица table{a...

Процедура для создание полей в таблице (кол-во полей > 50)
Собственно вопрос в теме. Для особо "одаренных": Помогите написать процедуру...

Обновить поле в одной таблице по совокупному значению других полей в другой таблице
Добрый день! Хотелось бы совета по следующей проблеме: Требуется обновить...

Вывод отсутствующих в таблице полей
Есть 2 бд в ms sql server. В одной бд есть таблица, называется stMain, в ней...

Сравнение полей в одной таблице
Нужно выбрать название фильма и перечень обозревателей, которые оценили один и...

Вывод отсутствующих в таблице полей sql
Есть две таблицы с некоторыми полями, которые имеют одинаковый набор данных....

4
qwertehok
2195 / 2185 / 597
Регистрация: 29.08.2013
Сообщений: 14,593
20.09.2016, 11:09 #2
временные таблицы не?
0
alex-ttt
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 2
20.09.2016, 11:15  [ТС] #3
Вопрос в том, как эта временная таблица должна создаваться и уничтожаться. Триггер на селект?
0
invm
1818 / 1228 / 350
Регистрация: 02.06.2013
Сообщений: 3,083
20.09.2016, 12:09 #4
Цитата Сообщение от alex-ttt Посмотреть сообщение
Вопрос заключается в том, можно ли использовать какой либо механизм кэширования или оптимизации
Можно.
Отказаться от функций вообще. Таблицу переделать в индексированное представление.
Если индексированное представление не подходит, в силу ограничений на возможность его создания, - отказываетесь от вычисляемых столбцов и делаете их постоянными. Пересчет делать в триггерах на таблицы, задействованные в функции tbl_Items.
0
qwertehok
2195 / 2185 / 597
Регистрация: 29.08.2013
Сообщений: 14,593
20.09.2016, 12:11 #5
Цитата Сообщение от alex-ttt Посмотреть сообщение
как эта временная таблица должна создаваться и уничтожаться
ээээ как бы все в документации есть
0
20.09.2016, 12:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2016, 12:11
Привет! Вот еще темы с решениями:

Переменное число полей в таблице и ее заполнение
Есть такие таблицы: Товары: ID-----Name----Shop1----Shop2---Shop3---Shop4...

Запрос на выведение неправильных полей в таблице
здравствуйте подскажите как написать запрос на выявление неправильных...

Оптимизация запроса, выдающего суточные показания на определённых датчиках (по recordID) в одной таблице
Есть запрос на SQL, обращающийся к одной таблице set dateformat dmy declare...

Среда SQL Server Management Studio округление в вычисляемых полях
привед всем! как в этой среде делать округление чисел? я в сервере храню БД а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru