Bagaimana untuk mengoptimumkan pertanyaan kabur dalam PHP

PHPz
Lepaskan: 2023-04-04 21:26:01
asal
557 orang telah melayarinya

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.

  1. Gunakan pernyataan LIKE

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%';
Salin selepas log masuk

ditukar kepada:

SELECT * FROM users WHERE username LIKE '%john%' OR email LIKE '%john%';
Salin selepas log masuk
  1. Laraskan kata kunci carian dengan halus

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}%')";
Salin selepas log masuk
  1. Carian teks penuh menggunakan MySQL

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);
Salin selepas log masuk
SELECT * FROM users WHERE MATCH(username,email,address) AGAINST('john' IN BOOLEAN MODE);
Salin selepas log masuk
  1. Caching hasil

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);
}
Salin selepas log masuk
  1. Menggunakan paging

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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!