SQL if/else vs and/or in select with different params -
i wonder if there's general performance difference between dividing query in if/else or use long clause and/or when want make select on table using different parameters? eg.
if statements:
if @p1 null , @p2 null begin select * table end else if @p1 not null , @p2 null begin select * table t t.val1 = @p1 end else if @p1 null , @p2 not null begin select * table t t.val2 = @p2 end
and/or statements:
select * t1 ( (t1.val1 = @p1 or @p1 null) , (t1.val2 = @p2 or @p2 null) )
i'd use and/or statements since doesn't produce code , is, in opinion, easier read how impact performance
the short answer it depends
. larger table , more disperate search criteria larger performance degredation of using or
combine 2 differing search behaviours.
http://www.sommarskog.se/dyn-search.html
this shows one query
= one execution plan
, , in turn means appropriate indexes can not correctly used in cases.
although article specific ms-sql-server, generic principle across of rdbms have ever worked on.
for fact tables, or large, use if
or dynamic sql
. small or trivial, use concise maintainable code.
Comments
Post a Comment