Rumah >pangkalan data >tutorial mysql >Apakah indeks berkelompok, indeks tidak berkelompok, indeks bersama dan indeks unik dalam MySQL
Indeks boleh dibahagikan kepada indeks B-Tree dan indeks cincang mengikut pelaksanaan asas pada kebanyakan masa kami menggunakan B -Indeks pokok, kerana prestasi dan cirinya yang baik, lebih sesuai untuk membina sistem konkurensi tinggi.
Dibahagikan mengikut kaedah penyimpanan indeks, indeks boleh dibahagikan kepada indeks berkelompok dan indeks tidak berkelompok. Nod daun bagi indeks tidak berkelompok hanya mengandungi semua medan dan ID kunci utama, manakala nod daun bagi indeks berkelompok mengandungi baris rekod lengkap.
Mengikut indeks berkelompok dan indeks tidak berkelompok, ia boleh dibahagikan lagi kepada indeks biasa, meliputi indeks, indeks unik dan indeks bersama.
Indeks berkelompok juga dipanggil indeks berkelompok Ia sebenarnya bukan jenis indeks yang berasingan, tetapi kaedah penyimpanan data indeks menyimpan semua maklumat lajur barisan rekod. Dengan kata lain, nod daun indeks berkelompok mengandungi baris rekod lengkap.
Indeks bukan berkelompok juga dipanggil indeks tambahan dan indeks biasa Nod daunnya hanya mengandungi satu nilai kunci utama Untuk mencari rekod melalui indeks bukan berkelompok, anda perlu mencari kunci utama dahulu, dan kemudian pergi ke indeks berkelompok melalui kunci utama Cari baris rekod yang sepadan, proses ini dipanggil pulangan jadual.
Sebagai contoh, jadual data yang mengandungi nama pengguna dan umur, dengan mengandaikan kunci utama ialah ID pengguna, struktur indeks berkelompok ialah (oren mewakili id, hijau ialah penunjuk kepada nod anak):
nod daun, untuk menyerlahkan rekod, dipisahkan, ia membentuk keseluruhan rekod. (id, name, age)
1 select id from userinfo where age = 10; Adakah masih perlu mengembalikan borang dalam kes ini? Kerana saya hanya memerlukan nilai id, saya sudah boleh mendapatkan id melalui indeks umur Jika saya masih kembali ke jadual sekali, bukankah ia akan menjadi operasi yang sia-sia? Malah ia tidak diperlukan. Apabila indeks tambahan sudah mengandungi semua maklumat yang diperlukan untuk pertanyaan, operasi pemulangan jadual boleh dielakkan dalam pertanyaan indeks. Ini adalah indeks penutup. Indeks bersama merujuk kepada indeks yang dibuat pada berbilang lajur pada masa yang sama Selepas mencipta indeks bersama, nod daun akan mengandungi nilai setiap lajur indeks pada masa yang sama, dan ia akan berdasarkan berbilang lajur pada masa yang sama Pengisihan lajur, pengisihan ini serupa dengan apa yang kita fahami sebagai susunan kamus. Contohnya, struktur indeks yang dicipta untuk nama dan umur di atas pada masa yang sama: Setiap nod daun menyimpan semua lajur indeks pada masa yang sama Selain itu, ia masih mengandungi id kunci utama. Apabila indeks dicipta untuk berbilang lajur, indeks tidak boleh digunakan selagi ia mengandungi lajur yang indeks itu mesti dibuat ikut prinsip padanan awalan paling kiri. Dengan mengandaikan bahawa indeks dicipta pada lajur (A, B, C), maka hanya senario berikut boleh menggunakan indeks: Pada lajur (A, B , C)/( Pertanyaan A, C) atau (A, B) akan sepadan dengan indeks dan indeks tidak boleh digunakan untuk (C, A) atau (B, C). Wildcard hanya boleh digunakan dalam bentuk LIKE 'val%', bukan LIKE '%VAL%', yang akan menyebabkan imbasan jadual penuh. Lajur indeks tidak boleh dikendalikan Contohnya, DI MANA A + 1 = 5 akan menyebabkan kegagalan indeks. Lajur indeks tidak boleh mengandungi pertanyaan nilai julat, seperti SUKA/ANTARA/>/ Lajur indeks tidak boleh mengandungi nilai NULL. Versi baharu MySQL (5.6 atau ke atas) memperkenalkan mekanisme tolak turun indeks: semasa proses traversal indeks, mekanisme tolak bawah indeks boleh menjadi Fields are dinilai dahulu, dan rekod yang tidak memenuhi syarat ditapis terus untuk mengurangkan bilangan pulangan jadual. Sebagai contoh, untuk indeks bersama pada (nama, umur) dalam jadual di atas, logik pertanyaan dalam keadaan biasa ialah: Cari ID kunci utama yang sepadan melalui nama Padankan keadaan umur berdasarkan lajur yang direkodkan oleh id Pendekatan ini akan membawa kepada banyak pemulangan jadual yang tidak diperlukan, contohnya, terdapat (Zhang San, 10 ) dan (Zhang San, 15 Sekarang kita ingin menanyakan rekod (Zhang San, 20). Apabila membuat pertanyaan, mula-mula cari semua ID kunci utama yang memenuhi syarat melalui Zhang San, dan kemudian lintasi baris yang memenuhi syarat dalam indeks berkelompok untuk melihat sama ada terdapat rekod yang sepadan dengan umur = 20. Dalam situasi sebenar, tiada rekod yang memenuhi syarat, jadi proses pengembalian jadual ini boleh dianggap sebagai langkah yang sia-sia. Fungsi utama tekan turun indeks adalah untuk memperbaiki ini Dalam indeks bersama, rekod yang tidak perlu dikembalikan ke jadual ditapis mengikut nama dan umur, dan kemudian indeks dikembalikan ke jadual. untuk mengurangkan bilangan pulangan jadual. Indeks unik ialah indeks yang tidak membenarkan nilai indeks yang sama Sistem menyemak sama ada terdapat nilai kunci pendua semasa membuat indeks, dan setiap kali pasangan dikemas kini atau ditingkatkan Ini ditanda semasa mengelog. Indeks kunci utama ialah indeks unik. 1
pilih id daripada info pengguna di mana umur = 10;
4. Indeks bersama
(name, age)
adalah semua singkatan, saya tidak boleh memikirkan lebih daripada sedozen nama. Prinsip pemadanan awalan paling kiri
Tekan turun indeks
5. Indeks unik
Atas ialah kandungan terperinci Apakah indeks berkelompok, indeks tidak berkelompok, indeks bersama dan indeks unik dalam MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!