I have been working on making this query work more efficiently.

I found that the number of Ors within the where clause are the biggest problem within this query.  This query sits in a stored procedure.

I am to the point where the only options I can think of is. :

 - Creating 16 different queries for all the different inbound parameter possibilities.
 - Creating a dynamic sql query but I don't believe this will be any faster
 - Reverting back to string sql, but I don't ever like to do this as these do not perform as quickly as stored procedures.

I am sure others have ran into this issue before.  The query performance isn't terrible to begin with at roughly a second or less, but there are instances where it is hit numerous times causing a lag of up to 5 or 6 seconds.

Query below. :

    DECLARE @PERSON_ID AS INT
    DECLARE @ITEM_ID AS INT
    DECLARE @ITEM_VERSION AS INT
    DECLARE @ITEM_SUB_NAME AS VARCHAR(250)
    DECLARE @ITEM_SUB_SUB_NAME AS VARCHAR(250)
    
    --DEFAULTS
    SET @PERSON_ID = 0
    SET @ITEM_ID = 0
    SET @ITEM_VERSION = 1
    SET @ITEM_SUB_NAME = NULL
    SET @ITEM_SUB_SUB_NAME = NULL
    
        SELECT ID, PERSON_ID, 
    		   ISNULL(ITEM_VERSION, 1) AS ITEM_VERSION,
    		   ISNULL(ITEM_SUB_NAME, '') AS 'ITEM_SUB_NAME',
    		   ISNULL(ITEM_SUB_SUB_NAME, '') AS 'ITEM_SUB_SUB_NAME',
    		   ISNULL(ITEM_DATE, '1/1/1900') AS 'ITEM_DATE',
    	FROM PERSON_TBL s WITH (NOLOCK)		
    	WHERE    ( PERSON_ID = @PERSON_ID OR @PERSON_ID = 0 )
    	AND ( ITEM_VERSION = @ITEM_VERSION OR ( @ITEM_VERSION = 1 AND ITEM_VERSION IS NULL ))
    	AND ( EMPLOYEE_ID = @EMPLOYEE_ID OR @EMPLOYEE_ID = 0 )
    	AND ( ITEM_SUB_NAME = @ITEM_SUB_NAME OR @ITEM_SUB_NAME IS NULL )
    	AND ( ITEM_SUB_SUB_NAME = @ITEM_SUB_SUB_NAME OR @ITEM_SUB_SUB_NAME IS NULL )
        ORDER BY PERSON_ID, ITEM_SUB_NAME