دستور SELECT TOP در SQL Server

دستور SELECT TOP در SQL Server

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۲۶ فروردین ۱۴۰۳
آخرین بروزرسانی: ۲۶ فروردین ۱۴۰۳
زمان مطالعه: 7 دقیقه
۴.۶
(۵)

دستور SELECT TOP در SQL Server به توسعه‌دهندگان و مدیران پایگاه داده (DBA) این امکان را می‌دهد تا تعداد مشخصی از رکوردها را از یک جدول پایگاه داده استخراج کنند و از آن به‌منظور مدیریت کارآمد مجموعه داده‌های بزرگ بهره ببرند. به‌صورت کلی، SQL Server یک نرم‌افزار قدرتمند برای مدیریت و دستکاری دیتاست‌های گسترده است. پیش‌تر به مباحث مختلفی نظیر دستور Select و دستور آپدیت ، همچنین عبارت Where و نحوه تعریف محدودیت (Constraint) در کنار ساخت جدول و ایجاد View پرداختیم. اگر علاقه‌مند به یادگیری مفاهیم بیشتری هستید، پیشنهاد می‌کنیم به آموزش جامع SQL Server مراجعه کنید. در این مطلب، مکانیزم دستور SELECT TOP در SQL Server ، کاربردها، مزایا و نحوه استفاده از آن به‌همراه کوئری‌های قابل اجرا را شرح می‌دهیم.

دوره کوئری نویسی در SQL Server نیک آموز

دستور SELECT TOP در SQL Server چیست؟

دستور SELECT TOP در SQL Server برای مشخص‌کردن تعداد رکوردهای برگشتی از مجموعه نتایج استفاده می‌شود. این موضوع به‌طور خاص در سناریوهایی مفید است که به‌دلیل ملاحظات عملکردی یا الزامات تجاری، به محدودکردن نتایج برگشتی توسط یک کوئری نیاز است.

ساختار کلی دستور SELECT TOP به شکل زیر است:

 

SELECT TOP (number|percent) [column_names]
FROM table_name
WHERE [condition]
ORDER BY [column_name];

 

بخش‌های مختلف دستور Select Top به‌صورت زیر تفسیر می‌شوند:

  • number|percent: تعداد یا درصد رکوردهای برگشتی را مشخص می‌کند.
  • column_names: ستون‌هایی که توسط کوئری برگردانده می‌شوند.
  • table_name: جدولی که داده‌ها از آن استخراج می‌شود.
  • شرط (condition): این جزء اختیاری، شرایطی است که باید برای انتخاب رکوردها رعایت شوند.
  • ORDER BY: هنگام استفاده از SELECT TOP ، برای اطمینان از اینکه داده‌ها به ترتیب معناداری برگردانده شوند، از Order By استفاده می‌شود. توجه کنید که این جزء اختیاری و در عین حال، ضروری به‌شمار می‌رود. اگر علاقه‌مند به یادگیری بیشتری درباره این دستور هستید، پیشنهاد می‌کنیم مقاله دستور مرتب سازی Order By در SQL Server را مطالعه نمایید.

کاربردهای دستور SELECT TOP در SQL Server

دستور SELECT TOP در SQL Server ، کاربردهای متنوعی دارد و برای سناریوهای گوناگونی مناسب است. در ادامه، تعدادی از موارد استفاده رایج SELECT TOP را بررسی می‌کنیم:

  • محدودسازی استخراج داده: اغلب اوقات در گزارش‌گیری و تحلیل داده، لازم است فقط روی عملکردهای برتر (Top Performer ها) یا داده های پرت (Outliers) تمرکز شود. در چنین شرایطی، می‌توان از دستور SELECT TOP برای استخراج تنها مرتبط‌ترین سطرهای داده استفاده کرد. به‌عنوان مثال، ۱۰ نماینده فروش برتر یا ۵ محصول با بالاترین امتیاز از این طریق قابل دریافت هستند.
  • بهبود کارایی کوئری: برای مجموعه داده‌های بزرگ، اسکن و بررسی کامل یک جدول می‌تواند زمان‌بر و پرمصرف باشد. با استفاده از SELECT TOP ، کاهش میزان داده‌های پردازشی و برگشتی میسر می‌شود که این موضوع به‌طور قابل توجهی زمان اجرای کوئری را سرعت می‌بخشد.
  • صفحه‌بندی (Pagination): در اپلیکیشن‌هایی که باید داده‌ها به‌صورت صفحه‌بندی‌شده نمایش داده شوند، می‌توانید از دستور SELECT TOP در SQL Server به‌منظور دریافت تنها زیرمجموعه‌ای از رکوردها در یک زمان استفاده کنید و بدین ترتیب، اطمینان حاصل کنید که اپلیکیشن حتی با مجموعه داده‌های بزرگ، همچنان پاسخگو باشد.

مزایای دستور SELECT TOP در SQL Server

مزایای SELECT TOP به شرح زیر است:

  • بهینه‌سازی عملکرد: SELECT TOP با محدودکردن تعداد رکوردهای برگشتی، می‌تواند به‌طور قابل توجهی بار روی پایگاه داده را کاهش دهد.
  • ساده‌سازی کوئری: این دستور به شما اجازه می‌دهد فقط روی بخش بالایی مجموعه داده‌های خود تمرکز کنید؛ در اغلب موارد، این همان بخشی است که در گزارشات و تحلیل‌های کسب‌وکار موردنیاز است.
  • نتایج فوری: دستور SELECT TOP برای بررسی‌های سریع و در مراحل اولیه کاوش داده که احتمالاً پردازش کل مجموعه داده‌ها ضروری نیست، انتخاب مفیدی است.

محدودیت های دستور SELECT TOP در SQL Server

محدودیت های دستور SELECT TOP در SQL Server به شرح زیر است:

  • انحراف داده (Data Skew): بدون استفاده مناسب از شرط ORDER BY ، ممکن است SELECT TOP زیرمجموعه‌ای از داده‌ها را برگرداند که نماینده کل داده‌ها نباشد. در چنین شرایطی، احتمالاً تحلیل و نتیجه‌گیری‌های تحریف شده خواهند بود.
  • انعطاف‌پذیری محدود: در مقایسه با دستورات مشابه آن مانند LIMIT در MySQL، دستور SELECT TOP می‌تواند انعطاف‌پذیری کمتری داشته باشد؛ زیرا وابستگی زیادی به سینتکس زبان T-SQL دارد و همیشه مستقیماً با سایر روش‌های Pagination یا استخراج داده قابل‌تعویض نیست.
  • وابستگی به ایندکس: افزایش کارایی تا حد زیادی به وجود ایندکس‌ها بستگی دارد؛ به‌طوریکه بدون وجود آن‌ها، مزایای استفاده از دستور SELECT TOP در SQL Server کمتر تجلی می‌کند. برای درک مفهوم Indexing، به مقاله ایندکس گذاری (Indexing) مراجعه کنید.

نحوه استفاده از دستور SELECT TOP در SQL Server

در این بخش از آموزش دستور SELECT TOP در SQL Server ، نحوه استفاده از آن را ازطریق پایگاه داده Northwind بررسی خواهیم کرد. دیتابیس Northwind به وفور در بستر آموزشی و برای آشنایی با این سیستم مدیریت پایگاه داده رابطه ای (RDBMS) استفاده می‌شود.

استخراج TOP N رکورد

شما می‌توانید به‌راحتی TOP N رکورد موردنظر خود را از جداول پایگاه داده استخراج کنید. در مثال زیر، به استخراج ۵ رکورد Top از جدول کارمندان می‌پردازیم.

 

استخراج TOP N رکورد در دستور SELECT TOP در SQL Server

 

استخراج TOP N رکورد به همراه Ordering

فرض کنید می‌خواهیم ۵ محصول گران‌قیمت برتر را از دیتابیس استخراج کنیم، در چنین شرایطی کافی است کوئری زیر را اجرا کنید:

 

SELECT TOP 5 ProductName, UnitPrice
FROM Products
ORDER BY UnitPrice DESC;

 

این کوئری، نام و قیمت پنج محصول گران‌قیمت را با مرتب‌کردن داده‌ها به ترتیب نزولی برای به‌دست آوردن بالاترین مقادیر، استخراج خواهد کرد.

 

استخراج TOP N رکورد به همراه Ordering

 

استخراج N درصد برتر رکوردها

در ادامه، کوئری موردنیاز برای یافتن ۲۵ درصد برتر محصولات گران‌قیمت از پایگاه داده Northwind آورده شده است:

 

SELECT TOP 25 PERCENT ProductID, ProductName, UnitPrice
FROM Products
ORDER BY UnitPrice DESC;

 

این اطلاعات برای تحلیل موجودی، ارزیابی استراتژی قیمت‌گذاری و برنامه‌ریزی بازاریابی بسیار مفید است.

 

استخراج N درصد برتر رکوردها

 

دستور SELECT TOP همراه با عملیات Join

شما می‌توانید دستور SELECT TOP در SQL Server را به‌همراه عملیات جوین استفاده کنید. در مثال زیر، به استخراج ۵ تأمین‌کننده برتر براساس تعداد محصولات تأمین‌شده توسط آن‌ها می‌پردازیم:

 

SELECT TOP 5 S.SupplierID, S.CompanyName, COUNT(P.ProductID) AS NumberOfProducts
FROM Suppliers AS S
JOIN Products AS P ON S.SupplierID = P.SupplierID
GROUP BY S.SupplierID, S.CompanyName
ORDER BY NumberOfProducts DESC;

 

دستور SELECT TOP همراه با عملیات Join

 

استخراج TOP N رکورد همراه با WITH TIES

دستور WITH TIES در SQL Server به شما این امکان را می‌دهد که در نتایج خروجی، سطرهای اضافی که با رتبه N‌ ام (براساس شرط ORDER BY) برابری می‌کنند را نیز لحاظ کنید. این زمانی مفید است که نمی‌خواهید به دلخواه سطرهایی را که در معیار مرتب‌سازی با رتبه N ام مطابقت دارند، حذف کنید.

کوئری زیر به درک توزیع محصولات در دسته‌بندی‌های مختلف کمک می‌کند و برای تجزیه‌وتحلیل موجودی و خط تولید ارزشمند است. استفاده از گزینه WITH TIES این اطمینان را حاصل می‌کند که تمام دسته‌بندی‌هایی که تعداد محصولاتشان برابر با سومین تعداد بالا (یعنی هم‌رتبه هستند) در نتایج گنجانده شوند و بدین ترتیب، نمای کاملی از Top Categories را ارائه می‌دهد.

 

SELECT TOP 3 WITH TIES C.CategoryID, C.CategoryName, COUNT(P.ProductID) AS NumberOfProducts
FROM Categories AS C
JOIN Products AS P ON C.CategoryID = P.CategoryID
GROUP BY C.CategoryID, C.CategoryName
ORDER BY NumberOfProducts DESC;

 

استخراج TOP N رکورد همراه با WITH TIES در دستور SELECT TOP در SQL Server

 

استفاده از TOP در Subquery

این نوع از SELECT TOP در SQL Server ، به‌طور ویژه زمانی مفید است که نیاز به جداسازی عناصری با بالاترین رتبه براساس یک معیار خاص، مانند قیمت، امتیاز عملکرد و غیره، در یک مجموعه داده دارید. با استفاده از کوئری زیر قصد داریم محصولاتی را استخراج کنیم که قیمت آن‌ها در میان ۱۰ قیمت برتر قرار دارد.

 

SELECT ProductID, ProductName, UnitPrice
FROM Products
WHERE UnitPrice IN (
    SELECT TOP 10 UnitPrice
    FROM Products
    ORDER BY UnitPrice DESC
);

 

استفاده از TOP در Subquery

 

جمع بندی : بررسی دستور SELECT TOP

دستور SELECT TOP در SQL Server به تسهیل استخراج کارآمد داده‌ها برای نیازهای مختلف تجاری و فنی کمک می‌کند. با درک کاربردها، مزایا و معایب بالقوه این دستور، می‌توانید آن را به‌طور مؤثر به کار ببرید. مشابه سایر مقالات، کوئری‌هایی را برای تمرین با پایگاه داده Northwind و به هدف تسلط بر SELECT TOP به شما آموزش دادیم. اگر می‌خواهید درک عمیق‌تری از زبان T-SQL به‌دست آورید، می‌توانید دو مقاله دستورات پرکاربرد SQL Server و اسکریپت های SQL را نیز به‌عنوان مطالب مکمل مطالعه کنید و همچنین از دوره کوئری نویسی پیشرفته استفاده نمایید.

چه رتبه ای می‌دهید؟

میانگین ۴.۶ / ۵. از مجموع ۵

اولین نفر باش

title sign
دانلود مقاله
دستور SELECT TOP در SQL Server
فرمت PDF
8 صفحه
حجم 1 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
402 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
title sign
دیدگاه کاربران