COME vs CONTAINS su SQL Server


210

Quale delle seguenti query è più veloce (LIKE vs CONTAINS)?

SELECT * FROM table WHERE Column LIKE '%test%';

o

SELECT * FROM table WHERE Contains(Column, "test");

12
Accetta una risposta, vuoi?
AgentFire,

7
Non è in attività da anni, amico.
Chris,

Risposte:


174

Il secondo (supponendo che tu intenda CONTAINSe lo inserisca effettivamente in una query valida) dovrebbe essere più veloce, perché può utilizzare una qualche forma di indice (in questo caso, un indice di testo completo). Naturalmente, questa forma di query è disponibile solo se la colonna si trova in un indice di testo completo. In caso contrario, è disponibile solo il primo modulo.

La prima query, usando LIKE, non sarà in grado di utilizzare un indice, poiché inizia con un carattere jolly, quindi richiederà sempre una scansione completa della tabella.


La CONTAINSquery dovrebbe essere:

SELECT * FROM table WHERE CONTAINS(Column, 'test');

@edze - vuoi dire, la stessa pagina che è già collegata per essere la mia prima menzione CONTAINS? Che ne dici? La forma originale della domanda aveva Column CONTAIN("%test%",Column)>0quale non era vicino dove valido. Non è ancora del tutto corretto.
Damien_The_Unbeliever il

Questo ci ha aiutato a risolvere una query su SharePoint. Ottieni un altro badge di ottima risposta.
ouflak,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.