Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk meningkatkan kecekapan anggaran kiraan baris dan pertanyaan penyahduplikasian data dalam PHP dan MySQL melalui indeks?

Bagaimana untuk meningkatkan kecekapan anggaran kiraan baris dan pertanyaan penyahduplikasian data dalam PHP dan MySQL melalui indeks?

王林
王林asal
2023-10-15 08:36:291331semak imbas

Bagaimana untuk meningkatkan kecekapan anggaran kiraan baris dan pertanyaan penyahduplikasian data dalam PHP dan MySQL melalui indeks?

Bagaimana untuk meningkatkan kecekapan anggaran kiraan baris dan pertanyaan penyahduplikasian data dalam PHP dan MySQL melalui indeks?

Apabila membangunkan aplikasi PHP dan MySQL, selalunya perlu untuk menganggarkan bilangan baris dalam pangkalan data dan melaksanakan operasi seperti pertanyaan penyahduplikasian. Untuk meningkatkan kecekapan operasi ini, proses pertanyaan boleh dioptimumkan dengan menggunakan indeks. Artikel ini akan memperkenalkan cara menggunakan indeks dalam PHP dan MySQL untuk meningkatkan kecekapan anggaran kiraan baris dan pertanyaan penyahduplikasian data, dan memberikan contoh kod khusus.

1. Pengoptimuman kecekapan anggaran nombor baris

Dalam beberapa senario aplikasi, adalah perlu untuk menganggarkan bilangan baris dalam pangkalan data Sebagai contoh, semasa melakukan pertanyaan paging, anda perlu mengetahui jumlah baris data yang ada jumlah. Cara biasa ialah menggunakan fungsi COUNT() untuk mengira bilangan baris, tetapi untuk jadual dengan jumlah data yang besar, operasi COUNT() boleh memakan masa yang sangat lama. Untuk meningkatkan kecekapan anggaran nombor baris, indeks boleh dioptimumkan.

Pertama, dengan mencipta indeks pada kunci utama jadual, anda boleh mempercepatkan operasi COUNT(*). Katakan terdapat jadual bernama "pengguna" dengan "uid" ialah kunci utama Anda boleh menggunakan kod berikut untuk membuat indeks:

ALTER TABLE users ADD INDEX idx_uid (uid);

Seterusnya, gunakan kod berikut untuk menganggarkan bilangan baris:

$result = $mysqli->query("SELECT COUNT(*) FROM users");
$row = $result->fetch_row();
$total_rows = $row[0];

Di atas. kod dilaksanakan dengan melaksanakan pernyataan pertanyaan "SELECT COUNT (*) FROM users" untuk mendapatkan jumlah bilangan baris, dan kemudian menyimpan hasilnya dalam pembolehubah $total_rows. Memandangkan kami mencipta indeks pada "uid", pertanyaan ini akan menjadi sangat cekap.

2. Pengoptimuman kecekapan pertanyaan penyahduplikasian data

Dalam beberapa senario aplikasi, adalah perlu untuk menyahgandakan data dalam pangkalan data, seperti mencari nama pengguna unik atau mengira bilangan nilai unik medan tertentu . Untuk meningkatkan kecekapan pertanyaan sedemikian, indeks boleh digunakan untuk pengoptimuman.

Andaikan terdapat jadual bernama "pesanan" di mana medan "nama pengguna" menyimpan nama pengguna pengguna. Kita boleh menggunakan kod berikut untuk melakukan pertanyaan penyahduplikasian:

$result = $mysqli->query("SELECT DISTINCT username FROM orders");
while ($row = $result->fetch_assoc()) {
    $username = $row['username'];
    // 处理不重复的用户名
}

Kod di atas memperoleh nama pengguna unik dengan melaksanakan pernyataan pertanyaan "SELECT DISTINCT username FROM orders". Jika terdapat indeks bernama "idx_username" pada jadual, maka pertanyaan ini akan menjadi sangat cekap.

Untuk mencipta indeks pada jadual "pesanan", anda boleh menggunakan kod berikut:

ALTER TABLE orders ADD INDEX idx_username (username);

Dengan mencipta indeks pada medan "nama pengguna", kecekapan pertanyaan penyahduplikasian boleh dipertingkatkan dengan lebih baik.

Ringkasnya, dengan mencipta indeks pada medan yang berkaitan pada jadual pangkalan data, kecekapan anggaran nombor baris dan pertanyaan penyahduplikasian data dalam PHP dan MySQL boleh dipertingkatkan dengan ketara. Dalam pembangunan sebenar, prestasi pertanyaan boleh dioptimumkan lagi dengan memilih medan yang sesuai untuk pengindeksan berdasarkan keperluan khusus.

Atas ialah kandungan terperinci Bagaimana untuk meningkatkan kecekapan anggaran kiraan baris dan pertanyaan penyahduplikasian data dalam PHP dan MySQL melalui indeks?. 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