Тимчасові таблиці в SQL Server

Введення


Тимчасові таблиці завжди чудово допомагали розробникам. Раніше, коли я використовував Access, я зазвичай створював тимчасові таблиці, які видаляв після виконання завдання. При використанні SQL Server вирішити задачу можна набагато простіше. Чи не так?


Типи тимчасових таблиць


Існує два типи тимчасових таблиць. Це Локальні і Глобальні тимчасові таблиці. Наведу приклад для полегшення розуміння тимчасових таблиць. Наступний приклад взятий з Books on Line Microsoft SQL Server 2000.


"Два типи тимчасових таблиць, локальні і глобальні, відрізняються один від одного своїми іменами, своєї видимістю і своєю доступністю. Локальні тимчасові таблиці мають префікс в імені у вигляді символу номера (#); Вони видні тільки в поточному з'єднанні користувача і видаляються після того, як користувач від'єднається від екземпляра (instance) Microsoft SQL Server 2000. Глобальні тимчасові таблиці мають префікс імені у вигляді подвійного символу #; вони видні для будь-якого користувача після їх створення і видаляються тоді, коли всі користувачі, що посилаються на таблицю, від'єднається від SQL Server. "1


"Наприклад, якщо ви створюєте таблицю з назвою employees, То ця таблиця може бути використана будь-яким користувачем, який має дозволу в базі даних на доступ до неї до тих пір, поки вона не буде вилучено. Якщо ви створюєте локальну тимчасову таблицю з ім'ям #employees, То тільки ви є суб'єктом, який може працювати з цією таблицею, яка буде видалена, як тільки ви відключіться. Якщо ви створюєте глобальну тимчасову таблицю ##employees, Будь-який користувач у базі даних може працювати з цією таблицею. Якщо ніхто інший не працює з цією таблицею після того, як ви її створили, то таблиця віддаляється після того, як ви від'єднатися. Якщо інший користувач працює з цією таблицею після того, як ви її створили, то таблиця віддаляється після того, як ви обидва від'єднатися. "2


Примітка: 1,2 вище взяті з Books on Line Microsoft SQL Server 2000 в розділі "Creating and Modifying"


На відміну від використання Access, вам немає необхідності видаляти тимчасові таблиці вручну, замість цього ви можете покластися на SQL Server, який зробить це автоматично.


Використання тимчасових таблиць


Тимчасові таблиці використовуються для різних цілей. Найбільш загальне застосування – це збереження результатів виклику процедури, що зберігається, зменшення числа рядків при з'єднаннях, агрегування даних з різних джерел або заміна курсорів та параметризованих уявлень. Використання курсорів SQL Server тягне за собою великі накладні витрати. Обслуговування коду стає простішим при використанні тимчасових таблиць в T-SQL. Значно простіше налагоджувати збережену процедуру, коли ви використовуєте тимчасові таблиці для зберігання тимчасових даних.


Альтернативи тимчасовим таблиць


Існує кілька альтернатив тимчасовим таблиць. Одна з них – використання похідних таблиць. У SQL Server 2000 з'явився новий тип даних – "table", що володіє властивостями, схожими з тимчасовими таблицями. Його основне призначення – тимчасове сховище набору рядків. "Table" грає роль локальної змінної. "Table" створюється в пам'яті на відміну від тимчасової таблиці, яка створюється в базі даних tempdb, що, очевидно, значно швидше. Інший факт полягає в тому, що "table" використовує обмежені ресурси в порівнянні з тимчасовими таблицями.


Обмеження тимчасових таблиць


Тимчасові таблиці створюються в базі даних tempdb і створюють додаткове навантаження на SQL Server, знижуючи загальну продуктивність. SQL Server відчуває великі проблеми при роботі з тимчасовими таблицями.


Ефективне використання тимчасових таблиць


Якщо у вас немає інших варіантів, окрім як використовувати тимчасові таблиці, то робіть це ефективно. Ось декілька прийомів для цього:



Висновок


Взагалі кажучи, використання тимчасових таблиць слід по можливості уникати. Якщо вам все-таки необхідно створити тимчасову таблицю, то слідуйте перерахованим вище правилам, щоб надати мімнімальное вплив на продуктивність сервера.

Dinesh Asanka(Оригінал: Temp Tables in SQL Server)
Переклад: Лисенко О.В.
Оригінал перекладу


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*