View Full Version : یک سوال در مورد جدولها و جدولهای موقتی و بهینگی...!
white fox
یک شنبه 10 اردیبهشت 1385, 21:08 عصر
با سلام خدمت دوستان عزیز....
اول میخواستم بدونم سرعت حذف و ایجاد یه جدول با یک جدول موقتی با هم فرقی دارند؟
و دوم اینکه من در سایتم مجبور شده ام به جای استفاده از یک جدول موقتی از یک جدول دائمی معمولی استفاده کنم..به این صورت که با یک SP اول تست میکنم که آیا جدول وجود داره یا نه اگه وجود داشت حذف میشه و دوباره جدول با همون اسم و داده های جدید ایجاد میشه.
میخواستم بدونم که در سایت یعنی در سرعت سایت چقدر تاثیر داره؟ و اینکه آیا با تعداد یوزر بالا به مشکل بر میخورم؟
من خودم با دو تا کامپیوتر البته روی شبکه LAN تست کردم حتی به صورت همزمان با دو تا سری داده های مختلف اما مشکلی پیش نیومد...
ممنون میشم از راهنمایی های خوب شما.
AminSobati
دوشنبه 11 اردیبهشت 1385, 13:19 عصر
سلام دوست عزیزم،
اساسا چه موقتیش و چه دائمیش (البته منظورم ساخت جدوله، سوء تفاهم پیش نیاد!) اگر تکرار نشه بهتره به خاطر اینکه به هر حال I/O روی دیسک ایجاد میکنه. مواردی رو برخورد کردم که نیاز به ساخت اینگونه جداول نبوده و با Query کار انجام میشده. اما من فرض رو بر این میگذارم که مورد شما جزو موارد صحیح هستش. من پیشنهاد میکنم در درجه اول از Table Variable استفاده کنین چون در حافظه تشکیل میشه و اگر حجم رکوردهای اون زیاد بشه، به صورت اتوماتیک بر روی دیسک (Tempdb) تخلیه میشه. ضمنا بستگی به کار شما داره که Table Variable مناسب باشه یا خیر (چون مثل Variable وقتی از Scope خارج بشین از بین میره). یک روش دیگه این هست که شما جدول همیشگی داشته باشید، ولی برای اینکه رکورد کاربرهای مختلف با هم ایجاد مشکل نکنه، میشه یک فیلد اضافی گرفت و موقع Insert، یک عدد تصادفی تولید کنید و به این کاربر اختصاص بدین تا در فیلد مذکور Insert بشه. این کاربر در کار با جدول همیشه در Where باید رکوردهای خودش رو Select و یا Delete کنه. فیلد تصادفی رو میتونین از جنس UniqueIdentifier بگیرین و برای تولید مقدار تصادفی از NewID استفاده کنین.
تعداد دو کاربر همزمان که تست کردین نمیتونه مشکل رو نمایان کنه در مقایسه با زمانی که ممکنه 50 کاربر همزمان سایت رو میبینند.
white fox
دوشنبه 11 اردیبهشت 1385, 14:00 عصر
ممنون آقای ثباتی از راهنماییتون...
کاری که من اسفاده کردم فکر نمیکنم کار غلطی باشه چون از چند مرجع خارجی و داخلی استفاده کردم.
(البته در اونجا جدول مشخصی بود که از اطلاعاتش در جدول موقتی استفاده میشد اما من جداولم ثابت نیست و ممکنه در هر بار اتصال جدول متفاوتی خونده بشه)
کار هم مربوط میشه به انجام Custom Paging در گرید ها..
هیچ رکوردی حذف یا اضافه نمیشه از این جداول و فقط خونده میشه.
برای این هم استفاده میکنم از یه جدول که در واقع ستون های کل یک جدولی رو در این جدول جدید میریزم به انضمام یک ستون اضافه که از نوع Identity هست...که بر مبنای شماره هایی که این ستون ایجاد میکنه حالا من مثلا 10 تا 10 تا اطلاعات رو از دیتابیس میخونم...
برای همین استفاده میکنم...
در مورد Table Varaible ]م چیزی نمیدونم یه تحقیقی میکنم اگر به مشکلی بر خوردم حتما باز هم سوالم رو میپرسم
با تشکر از شما.
AminSobati
دوشنبه 11 اردیبهشت 1385, 15:41 عصر
در مورد Paging این لینک بسیار جالبه (شاید دیده باشید البته):
http://www.aspfaq.com/show.asp?id=2120
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.