Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk mengoptimumkan pertanyaan kabur dalam PHP
PHP ialah bahasa skrip sumber terbuka yang digunakan secara meluas yang digunakan untuk mencipta aplikasi web dinamik. Dalam aplikasi ini, pertanyaan kabur sering digunakan, iaitu mencari maklumat yang berkaitan melalui kata kunci separa. Walau bagaimanapun, memandangkan pertanyaan kabur melibatkan sejumlah besar pemprosesan dan pengiraan data, mengoptimumkan kaedah pertanyaan adalah sangat kritikal apabila melakukan pertanyaan kabur.
Di bawah, kita akan membincangkan beberapa kaedah pengoptimuman untuk mengoptimumkan pertanyaan kabur dalam PHP.
Dalam PHP, menggunakan pernyataan LIKE ialah kaedah pertanyaan kabur yang paling asas. Tetapi anda perlu berhati-hati apabila menggunakan pernyataan LIKE kerana ia mencari padanan dalam setiap lajur dalam jadual, yang boleh menjadikan pertanyaan sangat perlahan. Oleh itu, apabila menggunakan pernyataan LIKE, adalah lebih baik untuk menentukan nama lajur tertentu.
Contoh:
SELECT * FROM users WHERE username LIKE '%john%';
ditukar kepada:
SELECT * FROM users WHERE username LIKE '%john%' OR email LIKE '%john%';
Jika anda sedang mencari Untuk pengguna yang nama penggunanya mengandungi "john", yang alamat e-melnya mengandungi "john", dan yang alamatnya mengandungi "john", menggunakan berbilang kenyataan SUKA boleh menyebabkan pertanyaan yang lebih perlahan. Oleh itu, kata kunci carian boleh diperhalusi, menghasilkan kelajuan pertanyaan yang lebih pantas.
Contoh:
$search_term = 'john'; $sql = "SELECT * FROM users WHERE (username LIKE '{$search_term}%' OR email LIKE '{$search_term}%' OR address LIKE '{$search_term}%')";
MySQL menyediakan fungsi carian teks penuh, yang lebih cekap daripada kenyataan LIKE. Carian teks penuh boleh mempercepatkan pertanyaan dengan menggunakan indeks khusus. Untuk menggunakan carian teks penuh MySQL, anda perlu menukar enjin tempat jadual disimpan ke MyISAM atau InnoDB dan menambah indeks teks penuh untuk lajur yang anda ingin cari.
Contoh:
ALTER TABLE users ADD FULLTEXT(username,email,address);
SELECT * FROM users WHERE MATCH(username,email,address) AGAINST('john' IN BOOLEAN MODE);
Jika hasil pertanyaan tidak berubah atau dikemas kini dengan kerap, maka hasilnya boleh dicache untuk mempercepatkan kelajuan Pertanyaan. Pendekatan ini boleh mengurangkan masa pelaksanaan dengan ketara, tetapi memerlukan berhati-hati untuk tidak menyimpan data yang telah tamat tempoh.
Contoh:
$search_term = 'john'; $result = apc_fetch($search_term); if ($result === false) { $sql = "SELECT * FROM users WHERE (username LIKE '{$search_term}%' OR email LIKE '{$search_term}%' OR address LIKE '{$search_term}%')"; $result = $db->query($sql); apc_store($search_term, $result); }
Jika hasil pertanyaan mengandungi sejumlah besar rekod, anda boleh menggunakan paparan paging untuk mengelakkan data terlebih beban. Pendekatan ini mengurangkan masa pemprosesan data dan meningkatkan prestasi. Untuk menggunakan penomboran, cuma tambahkan klausa LIMIT dan OFFSET pada pertanyaan anda.
Contoh:
$search_term = 'john'; $page = 1; $page_size = 10; $offset = ($page - 1) * $page_size; $sql = "SELECT * FROM users WHERE (username LIKE '{$search_term}%' OR email LIKE '{$search_term}%' OR address LIKE '{$search_term}%') LIMIT {$page_size} OFFSET {$offset}"; $result = $db->query($sql);
Kaedah di atas boleh membantu anda mengoptimumkan pertanyaan kabur dalam PHP. Walaupun masing-masing mempunyai kelebihan dan kekurangan, pilihan harus dibuat berdasarkan kes demi kes. Tidak kira kaedah yang digunakan, pelarasan yang sesuai perlu dibuat mengikut situasi sebenar untuk mendapatkan prestasi terbaik.
Atas ialah kandungan terperinci Bagaimana untuk mengoptimumkan pertanyaan kabur dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!