seajey: Electronic Knight (Default)
Недавно выяснил интересный момент: если табличная функция возвращает большое количество записей и нам в последствии нужно делать JOIN к другим таблицам, то предпочтительней использовать следующий метод.

Создаём временную таблицу:

CREATE #WorkingTable TABLE
(
ID int,
Value float
)

Создаём кластерный индекс по таблице:

CREATE CLUSTERED INDEX #table_index1 ON #WorkingTable(ID)

Забираем данные из табличной функции:

INSERT INTO #WorkingTable
(
ID,
Value
)
SELECT
f.ID,
f.Value
FROM dbo.fSelectData(@inID) AS f

Делаем итоговую выборку с джойном на нужный справочник:

SELECT
st.FullDescription,
wt.Value
FROM #WorkingTable AS wt
INNER JOIN SomeTable AS st ON st.ID = wt.ID

Правда, на мой наивный взгляд, заморачиваться с отдельной временной таблицей стоит, только если табличная функция выдаёт большой объём данных (десятки тысяч записей и больше).
seajey: Electronic Knight (Default)
Милую штучку тут на днях вычитал:

Вызов процедуры EXEC sp_depends [Object_Name] в MSSQL Studio даст нам список всех зависимых объектов для любого существующего в базе [Object_Name], будь то процедура, функция, таблица или представление. По полям, правда, уже не работает.

Правда, на все 100% sp_depends доверять нельзя - View Dependencies из контекстного меню Object Explorer в некоторых случаях почему-то более информативный.

Profile

seajey: Electronic Knight (Default)
SeaJey

September 2013

S M T W T F S
123456 7
8 910 11121314
15161718192021
22232425262728
2930     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 21st, 2017 08:48 am
Powered by Dreamwidth Studios