Rumah  >  Artikel  >  pangkalan data  >  INSTR lwn. LIKE dalam MySQL: Kaedah Padanan Rentetan Mana Yang Lebih Cepat?

INSTR lwn. LIKE dalam MySQL: Kaedah Padanan Rentetan Mana Yang Lebih Cepat?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-20 03:12:02987semak imbas

INSTR vs. LIKE in MySQL: Which String Matching Method Is Faster?

Analisis Prestasi: Padanan Rentetan INSTR lwn LIKE dalam MySQL

Apabila menguji kewujudan rentetan dalam lajur MySQL dengan panjang aksara berubah-ubah, timbul persoalan mengenai kaedah optimum untuk digunakan untuk kecekapan dan kelajuan. Dua pendekatan biasa ialah:

1. INSTR(columnname, 'mystring' ) > 0
2. columnname LIKE '%mystring%'

Penilaian Prestasi

Dari segi kelajuan, ujian kami mendedahkan hasil yang mengejutkan: kedua-dua INSTR dan LIKE menunjukkan prestasi yang sama apabila menyemak kewujudan subrentetan. Contohnya:

INSTR(Name,'search') > 0
LIKE '%search%'

Kedua-dua pertanyaan mengimbas keseluruhan jadual dan mengambil masa kira-kira 5.54 saat untuk diselesaikan. Walau bagaimanapun, apabila melakukan carian awalan pada lajur diindeks, pengendali LIKE dengan hanya kad bebas akhiran mengatasi INSTR dengan ketara:

LIKE 'search%'

Carian awalan yang dioptimumkan ini mengambil masa hanya 3.88 saat.

Melebihi INSTR dan LIKE

Selain INSTR dan LIKE, MySQL juga menyokong carian FULLTEXT untuk prestasi yang lebih baik. Walau bagaimanapun, carian ini paling berkesan apabila lajur jadual diindeks dengan FULLTEXT dan rentetan yang anda cari muncul berhampiran permulaan lajur.

Pertimbangan

Dalam amalan, pilihan antara INSTR dan LIKE bergantung pada kes penggunaan tertentu:

  • Untuk imbasan jadual penuh, kedua-dua INSTR dan LIKE berfungsi sama.
  • Untuk carian awalan pada lajur diindeks, LIKE dengan kad bebas akhiran adalah lebih pantas.
  • Untuk keperluan carian yang lebih kompleks atau sofistikated, carian FULLTEXT harus dipertimbangkan.

Atas ialah kandungan terperinci INSTR lwn. LIKE dalam MySQL: Kaedah Padanan Rentetan Mana Yang Lebih Cepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn