SQL多重过滤 - 最优方式

Ume*_*hat 6 sql query-optimization sql-server-2008

如何以最低的成本(SQL)实现这个简单的场景?

(实现支持应用的所有过滤器组合的存储过程.)

Table

    name | dateOfbirth | phone | email
     N1  | 01-01-1992  | P1    | E1
     N2  | 12-08-1976  | P2    | E2
     N3  | 09-11-1989  | P3    | E3
     N4  | 04-06-1991  | P4    | E4

    Filter 
    [x] Name
    [x] dateOfbirth 
    [x] phone
    [x] email
Run Code Online (Sandbox Code Playgroud)

看到SQL查询和过滤器实现多年并以多种方式实现.

我觉得现在是时候刷新了.

参考

  1. http://bit.ly/RYHzaF

  2. http://bit.ly/QyX103

如果发现重复,请标记/更正此问题

Phi*_*ann 7

每当我做可选过滤器时,我会选择一些代表所有数据的数据,然后使用以下内容:

SELECT name, dateOfbirth, phone, email
  FROM Table
 WHERE (@a_name  = '' or name = @a_name)
   AND (@a_date  = '1900-01-01' or dateOfbirth = @a_date)
   AND (@a_phone = '' or phone = @a_phone)
   AND (@a_email = '' or email = @a_email)
Run Code Online (Sandbox Code Playgroud)