نحوه شمارش ایندکس در SQL Server SQL Server دستورات SQL نوشته شده توسط: تورج عزیزی تاریخ انتشار: ۰۷ آذر ۱۳۹۴ آخرین بروزرسانی: 01 بهمن 1403 زمان مطالعه: 3 دقیقه ۰ (۰) شمارش ایندکس در SQL Server، در این مقاله عملگرد SQL Server در اجرای کوئری پرکاربرد برای شمارش ردیف های یک پایگاه داده SQL Server توضیح داده می شود. SELECT COUNT (*) FROM mytable شمارش ایندکس در SQL Server یک سوال در مورد کوئری بالا می تواند این باشد که آیا SQL Server همیشه برای بدست آوردن تعداد رکوردها از table scan استفاده می کند یا خیر؟ جواب خیر است. Query Processor از ایندکس با حداقل تعداد page برای شمارش استفاده می کند تا I/O کمتری زده شود. اجازه دهید این موضوع را آزمایش کنیم. افراد علاقهمند میتوانند با مطالعه مقاله پرکاربردترین دستورات SQL Server، دانش خود را در زمینه کوئرینویسی گسترش دهند. CREATE TABLE CTest (c1 INT IDENTITY, c2 BIGINT DEFAULT 1, c3 CHAR (1000) DEFAULT ‘a’); GO SET NOCOUNT ON; GO INSERT INTO CTest DEFAULT VALUES; GO 10000 قبل از اجراین کوئری دکمه Include Actual Query Plan را غیرفعال کنید. در غیر اینصورت ۱۰۰۰۰ پلن گرافیکی در نرم افزار SSMS تولید می شود و پیام زیر صادر می شود: The query has exceeded the maximum number of result sets that can be displayed in the Execution Plan pane. Only the first 250 result sets are displayed in the Execution Plan pane. حالا اگر SELECT COUNT(*) بگیریم، پلن حاصل به این شکل خواهد بود. Query Processor راهی جز انتخاب Table Scan ندارد. حالا من یک ایندکس Nonclustered اضافه می کنم که دارای page های کمتری نسبت به خود جدول است: CREATE NONCLUSTERED INDEX CTest_1 ON CTest (c2); GO مشاهده کاملترین و بروزترین آموزش sql server در نیک آموز پلن SELECT به شکل زیر است: توجه کنید که عملگر table scan به Index Scan روی ایندکس CTest_1 تغییر کرده است. به دلیل اینکه ایندکس دارای Page های کمتری نسبت به جدول است و بنابراین هزینه I/O کمتر است. پیشنهاد میکنیم برای درک بهتر مفاهیم کوئری نویسی را مطالعه کنید. حالا من یک ایندکس ایجا می کنم که از ایندکس CTest_1 هم کوچکتر است، یعنی روی ستونی با دیتاتایپ integer: CREATE NONCLUSTERED INDEX CTest_2 ON CTest (c1); GO و دوباره پلن به پلن با ایندکس کوچکتر تغییر می کند: همانطوری که انتظارش را داشتم دوباره تغییر کرد. حالا اجازه دهید به تعداد page های هر ایندکس نگاهی بیندازیم: SELECT [index_id], [page_count] FROM sys.dm_db_index_physical_stats (DB_ID (), OBJECT_ID (‘CTest’), NULL, NULL, ‘LIMITED’); GO index_id page_count ———– ——————– ۰ ۱۴۳۶ ۲ ۲۸ ۳ ۱۹ سخن پایانی شمارش ایندکس در SQL Server، هر باری که Query Processor اقدام به انتخاب یک ایندکس می کند یکی از عواملی که در انتخابش دخیل است هزینه I/O است. به یاد داشته باشید که کوچکرین ایندکس برای این منظور ایجاد ایندکس Nonclustered روی ستونی است که روی آن ایندکس Clustered ایجاد شده و البته موارد کارایی آن هم به مراتب کمتر از سایر ایندکس ها خواهد بود. ما در نیک آموز منتظر نظرات ارزشمند شما درباره این مقاله هستیم. چه رتبه ای میدهید؟ میانگین ۰ / ۵. از مجموع ۰ اولین نفر باش دانلود مقاله نحوه شمارش ایندکس در SQL Server فرمت PDF 12 صفحه حجم 11 مگابایت دانلود مقاله معرفی نویسنده مقالات 18 مقاله توسط این نویسنده محصولات 0 دوره توسط این نویسنده تورج عزیزی معرفی محصول ایمان باقری آموزش کوئری نویسی در sql server 2.190.000 تومان مقالات مرتبط ۰۲ آبان SQL Server ابزار Database Engine Tuning Advisor تیم فنی نیک آموز ۱۵ مهر SQL Server معرفی Performance Monitor ابزار مانیتورینگ SQL Server تیم فنی نیک آموز ۱۱ مهر SQL Server راهنمای جامع مانیتورینگ بکاپ ها در SQL Server تیم فنی نیک آموز ۰۸ مهر SQL Server Resource Governor چیست؟ آشنایی با نحوه پیکربندی و اهمیت های آن تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ