Форум программистов, компьютерный форум, киберфорум
Наши страницы

Microsoft SQL Server

Войти
Регистрация
Восстановить пароль
 
alex-ttt
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 2
#1

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

20.09.2016, 07:02. Просмотров 243. Ответов 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 Server
Здравствуйте. Использую SQL 2005 Допустим у меня есть таблица table{a decimal,b decimal, c as a/b} 1.В таком случае с у меня...

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

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

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

Запрос на выведение неправильных полей в таблице - SQL Server
здравствуйте подскажите как написать запрос на выявление неправильных заполнений. чтобы вывелись id from to где неправильно

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

4
qwertehok
1797 / 1788 / 406
Регистрация: 29.08.2013
Сообщений: 12,052
20.09.2016, 11:09 #2
временные таблицы не?
0
alex-ttt
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 2
20.09.2016, 11:15  [ТС] #3
Вопрос в том, как эта временная таблица должна создаваться и уничтожаться. Триггер на селект?
0
invm
1675 / 1149 / 314
Регистрация: 02.06.2013
Сообщений: 2,889
20.09.2016, 12:09 #4
Цитата Сообщение от alex-ttt Посмотреть сообщение
Вопрос заключается в том, можно ли использовать какой либо механизм кэширования или оптимизации
Можно.
Отказаться от функций вообще. Таблицу переделать в индексированное представление.
Если индексированное представление не подходит, в силу ограничений на возможность его создания, - отказываетесь от вычисляемых столбцов и делаете их постоянными. Пересчет делать в триггерах на таблицы, задействованные в функции tbl_Items.
0
qwertehok
1797 / 1788 / 406
Регистрация: 29.08.2013
Сообщений: 12,052
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
Привет! Вот еще темы с ответами:

Оптимизация запроса, выдающего суточные показания на определённых датчиках (по recordID) в одной таблице - SQL Server
Есть запрос на SQL, обращающийся к одной таблице set dateformat dmy declare @dt datetime set @dt= getdate() select t1.dt1, t1.c125,...

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

Хранимая процедура для вычисляемых полей в таблице - Firebird/InterBase
Имеется набор таблиц, связи между ними один к одному. Нужно создать хранимую процедуру в interbase, которая будет высчитывать и заносить...

MS Access Поиск в таблице значения, состоящего из нескольких полей - Delphi БД
Здравствуйте. Подскажите, пожалуйста, как можно написать SQL запрос в Delphi к MS Access, в котором объединяются поля (как в таком примере:...


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

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

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