Rumah > Artikel > pangkalan data > Apakah perbezaan antara indeks berkelompok mysql dan indeks tidak berkelompok
Perbezaan: 1. Indeks berkelompok menyimpan data dalam jadual pada nod daun, manakala indeks tidak berkelompok menyimpan kunci utama dan lajur indeks pada nod daun dalam indeks berkelompok Tertib pengisihan adalah konsisten, tetapi tertib pengisihan indeks bukan berkelompok adalah tidak konsisten 3. Setiap jadual hanya boleh mempunyai satu indeks berkelompok, tetapi boleh terdapat berbilang indeks tidak berkelompok.
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Indeks enjin storan Innodb MySQL dibahagikan kepada dua kategori: indeks berkelompok dan indeks tidak berkelompok Anda boleh memahami indeks berkelompok dan indeks tidak berkelompok dengan membandingkan indeks kamus bahasa Cina. Kamus bahasa Cina menyediakan dua cara untuk mendapatkan semula aksara Cina Yang pertama ialah mendapatkan semula pinyin (dengan syarat sebutan aksara Cina diketahui Sebagai contoh, aksara Cina dengan pinyin cheng diletakkan selepas aksara Cina dengan pinyin daripada chang. Nombor halaman aksara Cina yang sepadan didapati berdasarkan pinyin (kerana menekan pengisihan Pinyin, carian binari boleh mencari dengan cepat), inilah yang biasanya kita panggil susunan kamus; aksara mengikut sebatan, dan cari nombor halaman yang sepadan dengan aksara Cina. Pengambilan pinyin ialah indeks berkelompok, kerana rekod yang disimpan (data baris dalam pangkalan data, rekod terperinci aksara Cina dalam kamus) diisih mengikut indeks strok ini, walaupun perkataan dengan strok yang sama bersebelahan dalam indeks strok; storan sebenar Nombor halaman tidak bersebelahan, ini adalah indeks bukan berkelompok.
Susunan logik nilai kunci dalam indeks menentukan susunan fizikal baris yang sepadan dalam jadual.
Indeks berkelompok menentukan susunan fizikal data dalam jadual. Indeks berkelompok adalah serupa dengan buku telefon kerana data disusun mengikut nama keluarga. Indeks berkelompok amat berkesan untuk lajur yang nilai julat kerap dicari. Sebaik sahaja anda menggunakan indeks berkelompok untuk mencari baris yang mengandungi nilai pertama, anda boleh memastikan bahawa baris yang mengandungi nilai indeks berikutnya adalah bersebelahan secara fizikal. Contohnya, jika aplikasi anda melakukan pertanyaan yang kerap mendapatkan semula rekod dalam julat tarikh tertentu, anda boleh menggunakan indeks berkelompok untuk mencari baris yang mengandungi tarikh mula dengan cepat dan kemudian mendapatkan semula semua baris bersebelahan dalam jadual sehingga tarikh tamat dicapai. Ini membantu meningkatkan prestasi pertanyaan sedemikian. Begitu juga, jika lajur kerap digunakan semasa mengisih data yang diambil daripada jadual, jadual boleh dikelompokkan (diisih secara fizikal) pada lajur itu untuk menjimatkan kos dengan tidak perlu mengisihnya setiap kali lajur itu disoal.
Di atas ialah struktur indeks pokok b bagi innodb
Kita tahu pokok b berevolusi daripada b-tree, pesanan-m B-Tree It mempunyai ciri-ciri berikut:
1. Setiap nod boleh mempunyai sehingga m nod anak.
2. Kecuali nod akar dan nod daun, setiap nod mempunyai sekurang-kurangnya m/2 (dibundarkan) nod anak.
3. Jika nod akar bukan nod daun, nod akar mengandungi sekurang-kurangnya dua nod anak.
4. Semua nod daun terletak pada lapisan yang sama.
5. Setiap nod mengandungi elemen k (kata kunci), dengan m/2≤k6. Elemen (kata kunci) dalam setiap nod disusun dari kecil ke besar.
7 Nilai nod kiri setiap elemen (kata kunci) adalah kurang daripada atau sama dengan elemen (kata kunci). Nilai nod kanan lebih besar daripada atau sama dengan elemen (kata kunci).
Ciri-ciri pokok b ialah:
1. Semua nod bukan daun hanya menyimpan maklumat kata kunci.
2. Semua data satelit (data khusus) disimpan dalam nod daun.
3. Semua nod daun mengandungi maklumat tentang semua elemen.
4. Terdapat penuding pautan antara semua nod daun.
Kami mendapati bahawa b trre mempunyai ciri-ciri berikut:
Indeks Susunan logik indeks adalah berbeza daripada susunan storan fizikal bagi baris pada cakera.
Sebenarnya, mengikut takrifan, indeks selain daripada indeks berkelompok ialah indeks bukan berkelompok, tetapi orang ingin membahagikan indeks bukan berkelompok kepada indeks biasa, indeks unik dan indeks teks penuh. Jika kita perlu membandingkan indeks tidak berkelompok dengan sesuatu dalam kehidupan sebenar, maka indeks tidak berkelompok adalah seperti kamus radikal Kamus Xinhua, dan susunan strukturnya tidak semestinya konsisten dengan susunan penyimpanan sebenar.
Struktur storan indeks bukan berkelompok adalah sama seperti sebelumnya. Perbezaannya ialah bahagian data nod daun tidak lagi menyimpan data tertentu, tetapi pengagregatan data Kunci indeks. Oleh itu, proses mencari melalui indeks tidak berkelompok adalah untuk mencari kunci indeks berkelompok yang sepadan dengan kunci indeks, dan kemudian menggunakan kunci indeks berkelompok untuk mencari data yang sepadan pada pokok indeks kunci utama Ini proses dipanggil pulangan jadual !
Contohnya:
create table student ( `id` INT UNSIGNED AUTO_INCREMENT, `username` VARCHAR(255), `score` INT, PRIMARY KEY(`id`), KEY(`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Indeks berkelompok indeks (id), indeks indeks bukan berkelompok (nama pengguna).
使用以下语句进行查询,不需要进行二次查询,直接就可以从非聚集索引的节点里面就可以获取到查询列的数据。
select id, username from t1 where username = '小明' select username from t1 where username = '小明'
但是使用以下语句进行查询,就需要二次的查询去获取原数据行的score:
select username, score from t1 where username = '小明'
区别一:
聚集索引:就是以主键创建的索引,在叶子节点存储的是表中的数据
非聚集索引:就是以非主键创建的索引(也叫做二级索引),在叶子节点存储的是主键和索引列。
区别二:
聚集索引中表记录的排列顺序和索引的排列顺序一致;所以查询效率快,因为只要找到第一个索引值记录,其余的连续性的记录在物理表中也会连续存放,一起就可以查询到。缺点:新增比较慢,因为为了保证表中记录的物理顺序和索引顺序一致,在记录插入的时候,会对数据页重新排序。
非聚集索引中表记录的排列顺序和索引的排列顺序不一致。
区别三:
聚集索引是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储不连续。
区别四:
聚集索引每张表只能有一个,非聚集索引可以有多个。
【相关推荐:mysql视频教程】
Atas ialah kandungan terperinci Apakah perbezaan antara indeks berkelompok mysql dan indeks tidak berkelompok. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!