Rumah >pangkalan data >tutorial mysql >Apakah proses pertanyaan indeks sekunder MySQL?

Apakah proses pertanyaan indeks sekunder MySQL?

PHPz
PHPzke hadapan
2023-05-27 12:16:131213semak imbas

Kata Pengantar

Indeks berkelompok ialah struktur indeks berasaskan kunci utama yang dicipta oleh innodb secara lalai dan data dalam jadual diletakkan terus dalam indeks berkelompok sebagai halaman data nod daun:

Apakah proses pertanyaan indeks sekunder MySQL?

Carian data berdasarkan kunci primer: lakukan carian binari bermula dari nod akar indeks berkelompok, cari halaman data yang sepadan di sepanjang jalan dan cari terus kunci utama data sasaran berdasarkan direktori halaman.

Jika anda ingin mengindeks medan lain, atau membuat indeks bersama berdasarkan berbilang medan, apakah struktur indeksnya?

Dengan mengandaikan bahawa medan lain diindeks, seperti nama, umur, dsb., prinsip yang sama digunakan. Contohnya, apabila anda memasukkan data:

  • Masukkan data lengkap ke dalam halaman data nod daun indeks berkelompok dan mengekalkan indeks berkelompok pada masa yang sama

  • Untuk indeks yang dibuat untuk medan anda yang lain, buat semula pepohon B+

Sebagai contoh, jika anda mencipta indeks berdasarkan medan nama, apabila data dimasukkan, pokok B+ akan dibuat semula , nod daun pokok B+ juga merupakan halaman data, tetapi hanya medan kunci utama dan medan nama diletakkan dalam halaman data ini:

Apakah proses pertanyaan indeks sekunder MySQL?

Ini ialah medan nama berdasarkan pepohon B+ yang tidak bergantung pada kluster Struktur indeks indeks kluster, data yang disimpan dalam nod daunnya hanya mengandungi nilai kunci primer dan medan nama.

Peraturan pengisihan keseluruhan adalah sama dengan peraturan pengisihan indeks berkelompok mengikut kunci utama, iaitu:

  • Nilai nama dalam data halaman nod daun semuanya diisih

  • Nilai medan nama dalam halaman data seterusnya ialah > nilai medan nama dalam halaman data sebelumnya

Pokok indeks B+ medan nama juga Halaman indeks berbilang peringkat akan dibina halaman indeks:

  • Nombor halaman peringkat seterusnya

    <.>
  • Nilai medan nama minimum, mengikut pengisihan nilai Medan nama.

Jadi jika anda mencari data berdasarkan medan nama, prosesnya adalah sama Mulakan dari nod akar pokok indeks nama dan cari ke bawah lapisan demi lapisan sehingga anda menemuinya halaman data nod daun Cari nilai kunci utama yang sepadan dengan nilai medan nama.

Kemudian untuk pernyataan seperti

select * from t where name=&#39;xx&#39;

, mula-mula cari dalam pepohon indeks nama berdasarkan nilai nama, dan cari nod daun Hanya nilai kunci primer yang sepadan boleh ditemui, tetapi baris ini data tidak dapat ditemui semua medan.

Jadi kita masih perlu mengembalikan jadual: kita perlu pergi ke indeks berkelompok bermula dari nod akar mengikut nilai kunci utama, cari halaman data nod daun dan cari baris data lengkap sepadan dengan nilai kunci utama Pada masa ini Hanya selepas itu semua nilai medan yang diperlukan oleh

boleh dikeluarkan. select *

Indeks bersama

Contohnya, nama+umur, proses berjalan adalah sama dan pepohon B+ bebas ditubuhkan Selepas halaman data nod daun menyimpan id+nama+umur , ia diisih mengikut nama secara lalai Nama Perkara yang sama berlaku untuk mengisih mengikut umur, dan perkara yang sama berlaku untuk pengisihan nilai nama+umur antara halaman data yang berbeza.

Kemudian halaman indeks pepohon B+ indeks bersama nama+umur disimpan:

  • Nombor halaman nod lapisan seterusnya

  • Nilai nama+umur terkecil

Jadi apabila anda mencari berdasarkan nama+umur, anda akan melalui pepohon indeks bersama nama+umur, cari kunci utama, dan kemudian cari berdasarkan kunci utama Cari dalam indeks berkelompok.

Atas ialah kandungan terperinci Apakah proses pertanyaan indeks sekunder 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