-
سه شنبه 28 دی 1389, 12:42 عصر
#8
کاربر دائمی
نقل قول: معما از نوع SQL Server .
اول اینکه روی فیلدی که clustered index تعریف میشه حتما باید یونیک باشه.
وقتی count(*) مینویسیم خود optimizer تصمیم می گیره از کدام فیلد استفاده کنه ، باعث میشه scan روی جدول صورت بگیره که سربار زبادی داره.
ولی اگر count(clustered index) بنویسسیم مجبور می کنیم ازستون ایندکس برای شمارش استفاده می کنه، گویا اینجا هم باز scan انجام میشه و تفاوتی با مورد قبلی نداره.
ویا می تونیم از دستور زیر استفاده کنیم select count(*) from table with (index=index name) که من چندین مورد سعی کردم query خودم رو مجبود به استفاده از ایندکس بکنم ولی همیشه جوابگو نبوده و اصلا اجباری رو ایجاد نمی کنه و optimizer هر کاری رو صلاح بدونه انجام می ده.
بهترین حل استفاده از اطلاعات ذخیره شده در Sysindexes است.که دیگه table scan نداره.
برچسب های این تاپیک
قوانین ایجاد تاپیک در تالار
- شما نمی توانید تاپیک جدید ایجاد کنید
- شما نمی توانید به تاپیک ها پاسخ دهید
- شما نمی توانید ضمیمه ارسال کنید
- شما نمی توانید پاسخ هایتان را ویرایش کنید
-
قوانین سایت