Mengoptimumkan Pertanyaan LIKE Berbilang Lajur dalam MySQL
Pertanyaan PILIH perlahan menggunakan klausa LIKE pada berbilang lajur boleh menjadi hambatan prestasi. Dalam artikel ini, kami akan meneroka sama ada pengindeksan boleh meningkatkan kelajuan pertanyaan dan menangani kebimbangan tentang penggunaan cakera dan prestasi INSERT/DELETE.
Bolehkah Indeks Meningkatkan Prestasi LIKE?
Malangnya, indeks tidak berkesan untuk pertanyaan LIKE dalam MySQL kerana ia berfungsi dengan mengindeks bilangan aksara tetap bermula dari kiri. Dengan LIKE '%text%', boleh ada jumlah teks yang sewenang-wenangnya sebelum rentetan sasaran, menghalang penggunaan indeks.
Pendekatan Alternatif
Daripada menggunakan LIKE, pertimbangkan FTS (Carian Teks Penuh). FTS disokong untuk jadual MyISAM dan membolehkan pencarian yang cekap untuk padanan rentetan separa. Untuk jadual bukan MyISAM, melaksanakan sistem pengindeksan anda sendiri menggunakan jadual indeks yang berasingan untuk memetakan perkataan kepada ID boleh meniru fungsi FTS.
Penggunaan Cakera dan INSERT/DELETE Prestasi
Pengindeksan FTS boleh meningkatkan penggunaan cakera. Walau bagaimanapun, kesan pada operasi INSERT/DELETE adalah minimum. Ini kerana sisipan hanya menambah perkataan baharu pada indeks, yang dilakukan sebagai sebahagian daripada urus niaga, manakala memadamkan perkataan tanda untuk dialih keluar kemudian.
Kemas kini
MySQL 5.6 memperkenalkan sokongan FTS untuk jadual InnoDB, menawarkan pilihan yang mantap untuk meningkatkan prestasi LIKE pada pelbagai jenis jadual.
Atas ialah kandungan terperinci Bolehkah Pengindeksan Meningkatkan Prestasi Kueri SEPERTI Berbilang Lajur MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!