Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Best Way To Speed Up This Query
Message
 
 
À
10/01/2009 16:21:50
Walter Meester
HoogkarspelPays-Bas
Information générale
Forum:
Microsoft SQL Server
Catégorie:
Syntaxe SQL
Divers
Thread ID:
01371572
Message ID:
01372578
Vues:
14
Hi Walter,

You're missing the point. SQL Server cannot use indexes at all because LIKE condition starts with wild card character ('%').

>
>SQL server has something called an index scan, which might be elected to be used in such cases. Index scans are faster than full table scans. Whether it does, depends on a number of factors like, row count of the table, the parameters (e.g. values where there are no wild cards used or at the end of the parameter, are optimizable), a chached execution plan and the statistics of the column. In this case the OR is one of the obsticals to handle the query in its most efficient way. Better to rewrite in 3 selected combined with two UNIONs and make sure the execution plan is recalculated eac time.
>
>
>
>>Your query is not optimizable and requires a table scan. You may consider using full-text search if you're searching for words not just substrings.
>>
>>>I have a table called AlertData with 500,000 records in it. This query is taking 11 seconds, which is too long for the client.
>>>
>>>
>>>DECLARE @sSearchVal NVARCHAR(50)
>>>SET @sSearchVal = '%sun%'
>>>
>>>SELECT RowId, ContractNo, SystemId, ItemNumber, Description, Price
>>>	FROM AlertData
>>>	WHERE ContractNo LIKE @sSearchVal OR
>>>		   ItemNumber LIKE  @sSearchVal OR
>>>		   Description LIKE  @sSearchVal
>>>
>>>
>>>
>>>There are indexes on all 3 fields.
>>>
>>>Thanks
>>>
>>>Kevin
--sb--
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform