Bagaimana untuk mengoptimumkan carian teks penuh dan pertanyaan pengisihan dalam PHP dan MySQL melalui indeks?
Dalam membangunkan aplikasi Internet, pencarian semula teks penuh dan pertanyaan pengisihan adalah keperluan biasa. Untuk operasi pertanyaan pada jumlah data yang besar, mengoptimumkan indeks ialah salah satu cara penting untuk meningkatkan prestasi pangkalan data. Dalam gabungan PHP dan MySQL, kami boleh meningkatkan kecekapan pengambilan teks penuh dan pertanyaan pengisihan melalui penggunaan indeks yang munasabah. Artikel ini akan memperkenalkan cara untuk mengoptimumkan pencarian teks penuh dan menyusun pertanyaan dalam PHP dan MySQL melalui indeks, dan menyediakan beberapa contoh kod khusus.
1. Pengoptimuman perolehan teks penuh
Pendapatan teks penuh merujuk kepada mencari rekod yang sepadan berdasarkan kata kunci dalam data teks. Dalam MySQL, anda boleh menggunakan indeks FULLTEXT untuk mengoptimumkan operasi carian teks penuh. Berikut ialah contoh kod ringkas:
CREATE TABLE articles ( id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255), content TEXT, FULLTEXT(title, content) );
Kod di atas bermaksud mencipta jadual bernama artikel, termasuk tiga medan: id, tajuk dan kandungan, serta menambah indeks FULLTEXT pada tajuk dan kandungan. Seterusnya, kita boleh menggunakan pernyataan MATCH AGAINST untuk melakukan pertanyaan carian teks penuh:
SELECT * FROM articles WHERE MATCH(title, content) AGAINST('关键词');
di mana kata kunci adalah kandungan yang akan dicari. Menggunakan pernyataan MATCH AGAINST boleh melakukan carian teks penuh dengan berkesan, dan penggunaan indeks FULLTEXT boleh meningkatkan kelajuan carian.
2. Pengoptimuman pengisihan pertanyaan
Dalam operasi pertanyaan pengisihan, indeks juga memainkan peranan penting. Dalam MySQL, anda boleh menggunakan pernyataan ORDER BY untuk mengisih hasil pertanyaan. Untuk mengoptimumkan operasi pengisihan, indeks boleh digunakan untuk mengurangkan overhed pengisihan.
Untuk mengisih satu lajur, anda boleh membuat indeks terus pada lajur tersebut. Berikut ialah kod sampel mudah:
CREATE TABLE products ( id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), price DECIMAL(10, 2), INDEX(price) );
Kod di atas bermaksud mencipta jadual bernama produk, termasuk tiga medan: id, nama dan harga serta menambah indeks pada medan harga. Seterusnya, kita boleh menggunakan pernyataan ORDER BY untuk melaksanakan pertanyaan pengisihan:
SELECT * FROM products ORDER BY price ASC;
Di mana, ASC bermaksud dalam tertib menaik. Menggunakan indeks boleh menjadikan operasi pengisihan lebih cekap.
Untuk mengisih pada berbilang lajur, indeks komposit boleh dibuat pada berbilang lajur. Berikut ialah kod sampel ringkas:
CREATE TABLE orders ( id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, customer_id INT(11) UNSIGNED, order_date DATE, amount DECIMAL(10, 2), INDEX(customer_id, order_date) );
Kod di atas bermaksud mencipta jadual bernama pesanan, termasuk empat medan: id, id_pelanggan, tarikh_pesanan dan jumlah serta mencipta indeks komposit untuk dua medan id_pelanggan dan tarikh_pesanan. Seterusnya, kita boleh menggunakan pernyataan ORDER BY untuk melakukan pertanyaan isihan kompaun:
SELECT * FROM orders ORDER BY customer_id ASC, order_date DESC;
Antaranya, ASC bermaksud tertib menaik, dan DESC bermaksud tertib menurun. Operasi pengisihan boleh dibuat lebih cekap menggunakan indeks komposit.
Ringkasan:
Dengan menggunakan indeks secara rasional, pencarian semula teks penuh dan pertanyaan pengisihan PHP dan MySQL boleh dioptimumkan, dan kecekapan pertanyaan pangkalan data boleh dipertingkatkan. Dalam mendapatkan semula teks penuh, gunakan indeks FULLTEXT untuk carian kata kunci dalam pertanyaan yang diisih, gunakan indeks lajur tunggal atau indeks komposit untuk mengurangkan overhed pengisihan. Di atas ialah beberapa kod sampel mudah Operasi pengoptimuman khusus yang perlu dilaraskan dan dioptimumkan berdasarkan keperluan sebenar dan struktur data.
Atas ialah kandungan terperinci Bagaimana untuk mengoptimumkan pencarian teks penuh dan menyusun pertanyaan dalam PHP dan MySQL melalui indeks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!