توقف در حین اجرای یک کوئری با دستورات sql - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

توقف در حین اجرای یک کوئری با دستورات sql

0 امتیاز
با سلام

و عرض خسته نباشید به اعضای هفت خط کد

فرض کنید ما در یک جدول صد هزار تا رکورد داریم و فقط دنبال یک رکورد هستیم و می دانیم که آن رکورد در یک سوم ابتدای جدول وجود دارد.

وقتی با دستور select این کار را انجام می دهیم با هر شرطی هم که براش گذاشته باشیم تمام آن یکصد هزار رکورد را بررسی می کند و در آخر نتیجه را به ما بر می گرداند.

به این شکل باعث ایجاد یک وقفه در حین اجرای برنامه می شویم حالا فرض کنید که تعداد رکورد های خیلی بیشتر از این ها باشد.

می خواهم بدانم آیا راهی هست که وقتی کوئری به اولین نتیجه رسید آنرا برگرداند و دیگر بقیه رکورد ها را بررسی نکند و کارش همانجا خاتمه یابد یعنی بجای بررسی یکصد هزار رکورد فقط یک سوم اول را بررسی کند.

البته اینکه گفتم رکورد مورد نظر در یک سوم ابتدای جدول بود فقط یک مثال بود و می تواند در هر جای جدول باشد.

البته می دانم که می توان در دستور select از TOP و یا LIMIT استفاده کرد. اما مطمئن نیستم مثلا با دستور

SELECT TOP 1 * FROM table_name WHERE ID = 1

بعد از پیدا کردن اولین نتیجه کار کوئری به پایان می رسد یا نه.

همچنین

علاوه بر کوئری با دستور select

می خواهم بدانم راهکار برای دستورهای UPDATE و DELETE هم به چه شکلی می باشد.

نمی دانم چرا دستور TOP برای دستور UPDATE و DELETE کار نمی کند.

================================================== ====================

در صورتی که منظورم را درست متوجه نشدید یا جایی از آن ابهام دارد اعلام کنید تا بیشتر توضیح دهم.

================================================== =============

البته پایگاه داده های من مایکروسافت اکسس می باشد و اگر این مورد را در این پایگاه داده ها توضیح دهید که خیلی عالی هست.

اما

مطمئنا می خواهم بدانم که در اس کیو ال سرور یا هر پایگاه داده دیگری  به چه شکلی هست.

===============================================================

اگر این مطلب نیاز به پیشناز هایی خاصی دارد و یا در کل به توضیحات زیادی نیاز دارد در صورت صلاحدیدتان آنرا به مانند مقالات و یا آموزش هایی تصویری انتشار دهید.

===============================================================

همچنین من لینک زیر را در برنامه نویس ایجاد کردم:
تالار اکسس:

http://barnamenevis.org/showthread.php?496453-%D8%AA%D9%88%D9%82%D9%81-%DA%A9%D9%88%D8%A6%D8%B1%DB%8C-%D8%AF%D8%B1-%D8%A7%D9%88%D9%84%DB%8C%D9%86-%D9%86%D8%AA%DB%8C%D8%AC%D9%87

تالار اس کیو ال:

http://barnamenevis.org/showthread.php?496646-%D8%AA%D9%88%D9%82%D9%81-%DA%A9%D9%88%D8%A6%D8%B1%DB%8C-%D8%A8%D8%B9%D8%AF-%D8%A7%D8%B2-%D8%A7%D9%88%D9%84%DB%8C%D9%86-%D9%86%D8%AA%D9%86%DB%8C%D8%AC%D9%87

==================================================
از هر گونه راهنمایی مشتاقانه استقبال می نمایم.

با تشکر
سوال شده خرداد 14, 1394  بوسیله ی behzadkhan (امتیاز 56)   2 5 7

1 پاسخ

+1 امتیاز

سلام.

SELECT TOP 1 * FROM table_name WHERE ID = 1

دقیقا اولین رکورد رو که پیدا کرد جستجو رو متوقف میکنه.

شما میتونید زمان رو اندازه گیری کنید.

DECLARE @StartTime datetime,@EndTime datetime   
SELECT @StartTime=GETDATE() 
-- کوئری
SELECT @EndTime=GETDATE()   
SELECT DATEDIFF(ms,@StartTime,@EndTime) AS [Duration in milliseconds]   
پاسخ داده شده خرداد 14, 1394 بوسیله ی java (امتیاز 40)   2 4 5
با سلام

دوست عزیز

ممنون از پاسختان.
====================
برای دستور های DELETE و UPDATE باید چکار کنیم؟

با تشکر
برای آپدیت هم از top استفاده کنید
update TOP (1)  table_name set ID = 2 where ID = 1;
دوست عزیز برای delete هم به این صورت عمل کنید.
delete top(1) from table_name where ID = 1;
برای update و delete عدد رو داخل پرانتز قرار بدین. => top (1)
سلام دوست عزیز.
من با اکسس کار نکردم اما این کوئری ها رو در اس کیو ال امتحان کردم و جواب صحیح گرفتم.
...