Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk menambah indeks yang cekap pada rentetan dalam MySQL

Bagaimana untuk menambah indeks yang cekap pada rentetan dalam MySQL

王林
王林ke hadapan
2023-05-28 21:04:30936semak imbas

Keperluan

Dalam keperluan harian, ia adalah operasi yang sangat biasa bagi pengguna untuk log masuk ke sistem menggunakan nombor telefon bimbit atau e-mel mereka Jadi bagaimana untuk membina indeks yang munasabah pada medan seperti nombor telefon bimbit atau e-mel?

Indeks awalan

Indeks awalan menggunakan sebahagian daripada nilai medan sebagai indeks. Jika anda tidak menyatakan panjang medan indeks semasa membuat indeks dalam MySQL, keseluruhan rentetan akan digunakan untuk membina indeks.

语句1:
alter table test add index idx(email);
语句2:
alter table test add index idx(email(8));

Untuk pernyataan 1, indeks yang dibuat akan mengandungi keseluruhan nilai rentetan e-mel dalam setiap rekod.

Untuk pernyataan 2, indeks yang dibuat menyimpan 8 bait pertama medan e-mel dalam setiap rekod.

Kelebihan menggunakan indeks awalan adalah jelas, iaitu indeks akan menduduki lebih sedikit ruang, keseluruhan pokok indeks akan lebih padat, dan ketinggian pokok akan menjadi lebih rendah.

Tetapi selaras dengan itu, diskriminasi indeks akan menjadi lebih rendah, yang boleh menyebabkan peningkatan dalam bilangan baris imbasan indeks.

Apabila kita mencipta indeks, perbezaan indeks adalah penunjuk yang sangat penting. Lebih tinggi resolusi, lebih sedikit nilai pendua dan lebih cekap imbasan.

Merancang panjang indeks awalan dengan betul bukan sahaja dapat menjimatkan ruang, tetapi juga mengelakkan keperluan untuk mengimbas baris tambahan. Panjang khusus untuk digunakan disyorkan untuk dinilai dan diuji berdasarkan senario perniagaan sebenar kami.

Tertib songsang + indeks awalan

Tertib songsang + indeks awalan mempunyai senario penggunaan klasik, iaitu mengindeks nombor ID.

Anggaplah kita kini mahu mengekalkan maklumat identiti semua orang di bandar atau daerah, dengan pertanyaan mengikut nombor ID ialah senario frekuensi tinggi.

Nombor ID mempunyai 15 atau 18 digit Secara umumnya, 6 digit pertama nombor ID orang di bandar atau daerah yang sama secara amnya adalah sama jika nombor ID diindeks secara langsung , ia akan dibandingkan dengan ruang yang terbuang, yang membawa kepada kemerosotan prestasi. Jika anda menggunakan indeks awalan langsung, 6 bit pertama mempunyai sangat sedikit (atau bahkan tiada) diskriminasi, kerana kebanyakan nilai mempunyai 6 bit pertama yang sama.

Pada masa ini, faedah menggunakan tertib terbalik + indeks awalan ditunjukkan.

Kami mula-mula menyimpan kad ID dalam susunan terbalik, atau membuat medan nombor kad ID berlebihan dalam susunan terbalik, kemudian mengambil 6 digit pertama sebagai indeks awalan.

Perbezaan antara 6 digit terakhir kad ID pada asasnya cukup untuk kami Jika anda masih merasakan kelajuan pertanyaan tidak mencukupi, maka tiada masalah untuk mengambil 8 digit pertama.

Atas ialah kandungan terperinci Bagaimana untuk menambah indeks yang cekap pada rentetan dalam MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam