The left side of the condition in the WHERE clause must exactly match an index key. If you have multiple conditions, you must have multiple indeces to get full optimization. You'll need to determine if it's worth that. The more indeces you have, the longer an insert or update will take.
Examples:
INDEX KEY - UPPER(LastName + FirstName)
WHERE UPPER(LastName) == m.LastName && UPPER(FirstName) == m.FirstName
This will not optimize because the index key does not exactly match the left side of the condition
WHERE UPPER(LastName + FirstName) == m.LastName _ m.FirstName
This will be optimized
>Hi,
>
>I was testing how Rushmore Optimization would work on the following SQL select:
>
>
>=SYS(3054,1,"cmemvar")
>select top 100 * from ORDERS where REC_ID <> 'D' order by ORDER_NO desc
>
>The result (content of the variable cmemvar) is "Rushmore optimization level for table ORDERS: none."
>
>The table does have an index tag on ORDER_NO but no index tag for REC_ID.
>
>Then I created an index tag for REC_ID.
>And the result of the SYS(3054) has changed to:
>"Using index tag REC_ID to Rushmore optimize table ORDERS
>Rushmore optimization level for table ORDERS: Full"
>
>Does it mean that in order for Rushmore optimization to work EVERY field used in the WHERE and in ORDER has to have an index tag? Otherwise, Rushmore optimization does not work?
>
>TIA
Craig Berntson
MCSD, Microsoft .Net MVP, Grape City Community Influencer