Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
IIF equalent in T-SQL
Message
From
07/08/2016 06:30:04
 
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Environment versions
Visual FoxPro:
VFP 9 SP2
OS:
Windows 10
Database:
MS SQL Server
Application:
Desktop
Miscellaneous
Thread ID:
01639189
Message ID:
01639208
Views:
70
>>>>A quick note: "Column = @Param OR @Param IS NULL" is not the same as "@Param IS NULL OR Column = @Param".
>>>
>>>Why? It is exactly the same.
>>
>>For MSSQL's sake, I hope it isn't!
>>
>>When the first condition is true, the second is not tested. So, in the second expression, if @Param IS NULL there is no need to check on Column's value.
>
>This is not how MS SQL works query optimizer works. The order of conditions makes absolutely no difference.

I think the difference you notice, in your post, comes from fetching data and not from querying it. If you change "SELECT SomeCol2" to "SELECT SomeCol1", or "SELECT *", or "SELECT SomeCol1, SomeCol2", these perform in the same way:

SELECT * FROM Test WHERE @col IS NULL OR SomeCol = @col
SELECT * FROM Test WHERE SomeCol = @col -- assuming @col IS NOT NULL

If I read it right, that makes more sense to me: MSSQL optimizes fetching if data may come completely from an index.
----------------------------------
António Tavares Lopes
Previous
Reply
Map
View

Click here to load this message in the networking platform