امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
difference between IN and EXISTS
نویسنده پیام
ashkan آفلاین
بنيانگذار سايت
******

ارسال‌ها: 1,553
موضوع‌ها: 80
تاریخ عضویت: آبان ۱۳۸۲

تشکرها : 0
( 140 تشکر در 87 ارسال )
ارسال: #1
difference between IN and EXISTS
کسانی که با اسکیوال کار میکنن احتمالا دیدن این دو تا دستور رو :
Exists
IN
این دو دستور رو میشه خیلی راحت بجای هم استفاده کرد پس چرا دو دستور ساخته شده ؟؟؟؟
تقریبا هم این دو تا معادل هم هستن؟؟؟؟
من اینجا یکی از اختلافهای این دو تا دستور رو میگم :
نرم افزار اوراکل و ام اس اسکیوال قبل از اجرای یه دسوتر اونو بهینه میکنن تا کارایی رو بالاتر ببرن.

اولی اینه :

کد:
select ename from emp e
    where exists (select 0 from emp where e.mgr = empno and ename = '001');

دومی هم این:
کد:
select ename from emp e
    where mgr in (select empno from emp where ename = '001');
وقتی از دستور اولی Exists استفاده میکنی ناخودآگاه به بهینه ساز میگی اول سلکت خارجی رو اجرا کن نتیجه رو بده به سلکت داخل exists و او فیلتر رو روش اعمال کنه
اما در دومی اول سلکت داخل IN اجرا میشه نتیجه به سلکت بیرونی پاس میشه تا اون عمل فیلتر کردن رو انجام بده.

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

آشنایی با نظریه زبان باعث شد تا بفهمم کامپیوتر اونی نیست که من میدونم.
(آخرین ویرایش در این ارسال: ۱۴-شهریور-۱۳۸۶, ۱۴:۱۸:۲۷، توسط ashkan.)
۱۴-شهریور-۱۳۸۶, ۱۳:۴۸:۰۲
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  difference stored procedure with function stringf 3 4,852 ۰۵-دى-۱۳۹۰, ۱۱:۱۰:۲۷
آخرین ارسال: lord_viper

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS