PDA

View Full Version : فرق بین OR و IN درون شرط Where



حمیدرضاصادقیان
چهارشنبه 06 اردیبهشت 1385, 19:56 عصر
سلام دوستان.
میخواستم ببینم این دو تقریبا یک کار انجام میدن و امکان توسعه شرط هم با IN بیشتره . حالا میخوام ببینم وقتی میخوام یک مقداری رو در شرطم بسنجم که با OR هم میشه اینکارو کرد فرقی میکنه که با IN یا OR انجام بشه و آیا در سرعت تاثیری داره؟
به طور مثال
میخواهیم از بین کالاهای با کد 1 تا 5 قیمت اونو بدست بیاریم.


where code=1 or code=2 or code=3 ... or code=5

یا به صورت زیر میشه نوشت


where code in(1,2,3,4,5)

آیا به جز اینکه در نوع نوشتن کد تاثیری داره در سرعت اجرای اون هم تاثیری داره؟

AminSobati
چهارشنبه 06 اردیبهشت 1385, 23:34 عصر
سلام حمید جان،
IN و OR هیچ تفاوتی ندارند و در نهایت IN هم به OR تبدیل میشه (موقع اجرا). مثلا Query که با IN نوشتید رو در Query Analyzer با Ctrl+L اجرا کنید تا تبدیلش رو ببینید.
یادتون باشه حتما روی فیلد Code ایندکس بسازید.

Omid Rekabsaz
پنج شنبه 07 اردیبهشت 1385, 17:13 عصر
در اجرا توسط SQL Server هیچ تفاوتی با هم ندارد... ولی In امکاناتی را به برنامه نویس می دهد که در Or وجود ندارد... به عنوان مثال :


Where Code in (Select Code From [TableName])

AminSobati
پنج شنبه 07 اردیبهشت 1385, 23:31 عصر
در اجرا توسط SQL Server هیچ تفاوتی با هم ندارد... ولی In امکاناتی را به برنامه نویس می دهد که در Or وجود ندارد... به عنوان مثال :


Where Code in (Select Code From [TableName])


استفاده از IN به این شکل کاملا متفاوت از حالتیه که سوال شده بود. IN در ترکیب با Select، موقع اجرا به Join تبدیل میشه (توسط Query Optimizer) و اساسا چنین Query رو میشه با Join نوشت.

ama55555
جمعه 08 اردیبهشت 1385, 00:04 صبح
در برخی موارد استفاده In بجای or در سرعت اجرای procedure بسیار سریعتر می باشد
من در خیلی از مواقع این مورد را امتحان کردم

به نظر من بیشتر از دستور In بجای Or استفاده کنید.