News from SQLPASS 2005: Substring Statistics

Come tutti coloro che usano SQL Server sapranno, l'utilizzo della clausola LIKE all'interno di una query può essere problematico. In SQL Server 2000 l'utilizzo è "lecito" nel caso in cui l'utilizzo di wildcard sia limitato alla funzionalità di ricerca di valori che "iniziano per" un determinato valore. Ad esempio

SELECT Telefono FROM Elenco WHERE Cognome LIKE 'Ma%'

è tranquillamente ottimizzabile dall'optimizer di SQL Server e puà utilizzare l'indice eventualmente costruito sulla colonna Cognome. Questo discorso non è più applicabile se la nostra clausola diventa

... LIKE '%ri'

In questo caso SQL Server 2000 passa sicuramente a fare un'operazione di scan, in quato l'indice non è di nessuna utilità.

Bene, con SQL Server 2005 le cose cambiano: l'indice costruito sulla colonna Cognome può anche memorizzare le informazioni sulla distribuzione dei valori (ossia le statistiche) analizzando le substring contenute nella colonna indicizzata, e quindi l'indice diventa (potenzialmente) utile anche nel caso suddetto, e, quindi, anche nel caso più esteso:

... LIKE '%aur%'

Print | posted on venerdì 30 settembre 2005 19:05

Feedback

# re: News from SQLPASS 2005: Substring Statistics

Left by Davide Mauri at 30/09/2005 22:05
Gravatar Gigio, il fulltext non viene utilizzato dalla clausola like, ma solo dalle clausole FREETEXT, FREETEXTTABLE, CONTAINS e CONTAINSTABLE.
Per attivarlo e configurarlo di consiglio di guardare nell'help di SQL Server (Books online) che sono molto ben fatti
Comments have been closed on this topic.

Copyright © Davide Mauri

Design by Bartosz Brzezinski

Design by Phil Haack Based On A Design By Bartosz Brzezinski