Jawaban:
Untuk melihat perbedaan kinerja, coba ini:
SELECT count(*)
FROM master..sysobjects as A
JOIN tempdb..sysobjects as B
on A.name = B.name
SELECT count(*)
FROM master..sysobjects as A
JOIN tempdb..sysobjects as B
on A.name LIKE B.name
Membandingkan string dengan '=' jauh lebih cepat.
LIKEdan operator kesetaraan memiliki tujuan yang berbeda, mereka tidak melakukan hal yang sama:
=jauh lebih cepat, sedangkan LIKEdapat mengartikan wildcard. Gunakan di =mana pun Anda bisa dan di LIKEmana pun Anda harus.
SELECT * FROM user WHERE login LIKE 'Test%';
Pertandingan sampel:
TestUser1
TestUser2
TestU
Test
Dalam pengalaman kecil saya:
"=" untuk Pencocokan Tepat.
"LIKE" untuk Pertandingan Parsial.
Ada beberapa trik lain yang ditawarkan Postgres untuk pencocokan string (jika itu adalah DB Anda):
ILIKE, yang merupakan kasus SEPERTI pertandingan yang tidak sensitif:
select * from people where name ilike 'JOHN'
Cocok:
Dan jika Anda ingin benar-benar marah, Anda dapat menggunakan ekspresi reguler:
select * from people where name ~ 'John.*'
Cocok:
Sama seperti kepala, operator '=' akan menambahkan string dengan spasi di Transact-SQL. Jadi 'abc' = 'abc 'akan kembali benar; 'abc' LIKE 'abc 'akan kembali salah. Dalam kebanyakan kasus '=' akan benar, tetapi dalam kasus saya baru-baru ini tidak.
Jadi sementara '=' lebih cepat, LIKE mungkin secara lebih eksplisit menyatakan niat Anda.
LIKEdigunakan untuk pencocokan pola dan =digunakan untuk uji kesetaraan (seperti yang didefinisikan oleh yang COLLATIONdigunakan).
=dapat menggunakan indeks sementara LIKEkueri biasanya memerlukan pengujian setiap rekaman tunggal dalam hasil yang ditetapkan untuk memfilternya (kecuali jika Anda menggunakan pencarian teks lengkap) sehingga =memiliki kinerja yang lebih baik.
Ada alasan lain untuk menggunakan "suka" walaupun kinerjanya lebih lambat: Nilai karakter secara implisit dikonversi menjadi bilangan bulat jika dibandingkan, jadi:
declare @transid varchar (15)
if @transid! = 0
akan memberi Anda kesalahan "Konversi nilai varchar '123456789012345' meluap kolom int".