Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan SEPERTI Berbilang Lajur dalam MySQL?

Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan SEPERTI Berbilang Lajur dalam MySQL?

Linda Hamilton
Linda Hamiltonasal
2024-12-06 21:40:18282semak imbas

How Can I Optimize Multi-Column LIKE Queries in MySQL?

Meningkatkan Prestasi Pertanyaan LIKE Berbilang Lajur dalam MySQL

Dengan pertanyaan kerap seperti SELECT x, y, z FROM table WHERE x SUKA '%text%' ATAU y SUKA '%text%' ATAU z SUKA '%text%', mengoptimumkan MySQL untuk operasi sedemikian menjadi penting. Walaupun indeks biasanya meningkatkan kecekapan pertanyaan untuk lajur diindeks, isunya terletak pada penggunaan kad bebas (%teks%) dalam klausa SUKA.

Untuk lajur teks, indeks berfungsi dengan mengindeks aksara bermula dari sebelah kiri. Bagaimanapun, pertanyaan LIKE dengan kad bebas pendahuluan dan mengekori (cth., %teks%) menghalang penggunaan indeks kerana kedudukan permulaan teks tidak diketahui.

Penyelesaian Alternatif

Sebaliknya daripada bergantung pada indeks, pertimbangkan perkara berikut pendekatan:

Carian Teks Penuh (FTS)

Jika jadual yang terjejas menggunakan enjin storan MyISAM, MySQL menyediakan FTS. Ciri ini memudahkan carian teks yang cekap dengan mengindeks keseluruhan perkataan dan bukannya bilangan aksara yang tetap.

Sistem Pengindeksan Tersuai

Untuk jadual bukan MyISAM, buat jadual berasingan jadual indeks yang menyimpan perkataan dan ID yang sepadan dalam jadual utama. Ini pada asasnya meniru kefungsian FTS, membolehkan carian pantas pada istilah yang diindeks.

Kemas kini

MySQL versi 5.6 dan kemudian melanjutkan sokongan FTS kepada jadual InnoDB, memberikan sokongan yang cekap alternatif untuk kedua-dua enjin storan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan SEPERTI Berbilang Lajur dalam MySQL?. 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