MSSQL - Query efficiency to many filters
The basic form you have is correct, though you want to avoid concatenating parameters into the string the way you have. See:


Revisiting catch-all queries
#BackToBasics : An Updated "Kitchen Sink" Example


The efficiency part will depend ultimately on the supporting indexes you have for your queries, along with other local factors, like hardware, blocking, rows returned, etc.