ارسال پاسخ 
 
امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
Temp Table تمپ تیبل یا جدول تمپ در SQL Server
05-10-2015, 10:25 PM
ارسال: #1
Temp Table تمپ تیبل یا جدول تمپ در SQL Server
Temp Table
در SQL server یک پایگاه داده از پیش تعریف شده با نام Temp db وجود دارد، در بعضی مواقع شما به یک جدول موقت نیاز دارید این جداول در این پایگاه داده ذخیره می شود و Temp Table نام دارد.
برای استفاده از جداول موقت دو حالت وجود دارد اگر قبل از این جداول از یک # استفاده شود این جدول Local بوده مثلا اگر در Stored Procedure دستور ساخت این جدول نوشته شده باشد به ازای هر کاربر شما این جدول ساخته می شود و در صورتی که کانکشن این کاربر از بین برود جدول وی نیز از بین می رود.
در حالت دوم اگر قبل از نام جدول از دو علامت ## استفاده شود این جدول Global خواهد بود. در این صورت سایر کاربران از همین جدول استفاده می کنند اگر کاربر به وجود آورنده جدول، جدول را حذف کند طبیعتا جدول دیگر توسط هیچ کاربری قابل دسترس نخواهد بود.
نمونه دستورات :
کد:
CREATE TABLE #Table (id INT , name NVARCHAR(MAX))
DECLARE @i INT =0
WHILE (@i <20)
BEGIN
INSERT INTO #Table ([id],[name]) VALUES (@i,'ESH')
SET @i+=1;
END
SELECT * FROM #Table
DROP TABLE #Table
استفاده از جدول موقت به طور کلی برای پردازش مقدار زیادی از اطلاعات است زیرا می تواند کار ها را به صورت موازی انجام دهد . در حالی که جدول متغیرها بهترین راه حل برای مقدار کمی از داده ها است .
موارد استفاده از temp table ها :
حتی الامکان می بایست از temp table ها استفاده نشود. زیرا علاوه بر این که سر بار زیادی بر روی sql می گذارند . performance را نیز پایین می اورند . تنها در برخی استفاده از temp table ها مانعی ندارد . برخی از این استثنا ها عبارتند از :
الف) هنگامی که بخواهیم نتیجه یک Query را از یک nested stored procedure به stored procedure دیگری منتقل کنیم که در این صورت تنها راه حل ممکن استفاده از temp table ها است .
ب) در صورتی که بخواهیم در stored procedure از cursor استفاده کنیم . با توجه به سرعت پایین cursor ها می توان از Temp Table ها به عنوان راه حل استفاده نمود .
ج) سعی کنید فقط فیلد هایی را که نیاز دارید در Temp Table درج نمایید.
د) از دستور Select Into برای ایجاد Temp Table استفاده نکنید بلکه ابتدا با استفاده از دستور Create Table جدول مجازی را ایجاد کنید و سپس با استفاده از دستور Insert Into رکورد های مورد نظر را در آن درج نمایید .
ه) حتما سعی کنید از clustered و non-clustered Index ها در Temp Table ها استفاده نمایید . ( مخصوصا هنگامی که تعداد رکوردهای موجود در Temp Table ها بسیار زیاد باشد)
و) حتما پس از استفاده از Temp Table ها ان را حذف کنید ( در این صورت فضای Tempdb ازاد می شود) و هرگز منتظر نباشید تا با قطع شدن connection بطور اتوماتیک tempdb حذف شود .
ز) در صورتی که استفاده از Temp Table ها در برنامه هایتان زیاد است بهتر است با تنظیمات sql server مسیر ان را به یک دیسک مجزا منتقل کنید تا فضای اصلی کمتر اشغال گردد.
ح) هرگز Temp Table ها را در Transaction ها ایجاد نکنید چرا که در این صورت برخی از جداول سیستمی (sysindex , syscolumn , syscomments) در حالت Lock باقی می مانند و عملا تا پایان Transaction ازاد نمی شوند و بنابراین بسیاری از دستورات که توسط کاربران دیگر صادر می شود تا پایان Transaction غیر قابل اجرا خواهد بود . برای جلوگیری از این مشکل بهتر است قبل از Transaction ان را ایجاد کنید تا جداول سیستمی Lock نشوند .

منابع و مآخذ :
http://ably.ir/tag/Temp
http://stackoverflow.com/questions/65957...stent-tabl
اموزش دستورات مختصر و مفید اس کیو ال نوشته بهزاد خالقی
جمع آموری و ترجمه: سرکار خانم مهندس شیرانی


==================================================
طراحی وب سایت
پروژه های برنامه نویسی تجاری
دانلود پروژه های ASP.NET وب سایتهای آماده به همراه توضیحات
دانلود پروژه های سی شارپ و پایگاه داده SQL Server همراه توضیحات و مستندات
دانلود پروژه های UML نمودار Usecase نمودار class نمودرا activity نمودار state chart نمودار DFD و . . .
دانلود پروژه های حرفه ای پایگاه داده SQL Server به همراه مستندات و توضیحات
پروژه های حرفه ای پایگاه داده Microsoft access به همراه مستندات و توضیحات
دانلود پروژه های کارآفرینی
دانلود گزارشهای کارآموزی کارورزی تمامی رشته های دانشگاهی
قالب تمپلیت های آماده وب سایت ASP.NET به همراه Master page و دیتابیس
برنامه های ایجاد گالری عکس آنلاین با ASP.NET و JQuery و اسلایدشو به همراه کد و دیتابیس SQL کاملا Open Source واکنشگرا و ساده به همراه پایگاه داده
==================================================
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان