To pytanie omija to, nad czym się zastanawiam, ale odpowiedzi nie dotyczą go dokładnie.
Wydawałoby się, że generalnie „=” jest szybsze niż „like”, gdy używa się symboli wieloznacznych. Wydaje się, że jest to powszechna mądrość. Załóżmy jednak, że mam kolumnę zawierającą ograniczoną liczbę różnych stałych, zakodowanych na stałe identyfikatorów varchar i chcę wybrać wszystkie wiersze pasujące do jednego z nich:
select * from table where value like 'abc%'
i
select * from table where value = 'abcdefghijklmn'
„Like” powinno wymagać tylko przetestowania pierwszych trzech znaków, aby znaleźć dopasowanie, podczas gdy „=” musi porównać cały ciąg. W tym przypadku wydaje mi się, że „lubienie” miałoby przewagę, przy czym wszystkie inne rzeczy byłyby równe.
Jest to ogólne, akademickie pytanie, więc nie powinno mieć znaczenia, która baza danych, ale powstało przy użyciu SQL Server 2005.
value
jest indeksowany. Jeśli tak,=
jest to proste wyszukiwanie bez konieczności skanowania tabeli i usunie spodnie z każdegoLIKE
stwierdzenia, które do niego rzucisz.