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