Тимчасові таблиці в 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>

*

*