Rumah > Artikel > pangkalan data > Apakah prinsip pengindeksan dan strategi pengoptimuman pangkalan data MySQL?
Indeks ialah fail khas yang mengandungi penunjuk rujukan kepada semua rekod dalam jadual data. Anda boleh membuat indeks pada satu atau lebih lajur dalam jadual dan menentukan jenis indeks Setiap jenis indeks mempunyai pelaksanaan struktur datanya sendiri.
Hubungan antara jadual, data dan indeks dalam pangkalan data adalah serupa dengan hubungan antara buku, kandungan buku dan katalog buku pada rak buku index adalah serupa dengan katalog buku , boleh digunakan untuk mencari dan mendapatkan data dengan cepat. Indeks boleh meningkatkan prestasi pangkalan data.
Untuk mempertimbangkan untuk mencipta indeks pada lajur atau lajur jadual pangkalan data, anda perlu mempertimbangkan perkara berikut:
Data Kelantangan adalah besar dan pertanyaan bersyarat sering dilakukan pada lajur ini.
Kekerapan operasi sisipan dan operasi pengubahsuaian pada lajur ini dalam jadual pangkalan data ini adalah rendah.
Indeks mengambil ruang cakera tambahan.
Terbahagi daripada struktur storan indeks: Indeks BTree, indeks Hash, indeks teks penuh FULLTEXT, indeks RTree
Terbahagi daripada peringkat aplikasi: indeks biasa, indeks unik, indeks kunci primer, indeks komposit
Terbahagi daripada jenis nilai kunci indeks, kunci utama indeks, indeks tambahan (Indeks indeks sekunder)
Terbahagi daripada hubungan logik antara storan data dan nilai kunci indeks: indeks berkelompok (indeks berkelompok) indeks bukan berkelompok (indeks tidak berkelompok)
Dibahagikan daripada bilangan lajur indeks: indeks lajur tunggal, indeks kompaun
Perbezaan:
Data disimpan di lokasi berbeza: Pokok B+ disimpan dalam nod daun, B- pokok disimpan dalam semua nod
Mencerminkan kelebihan pepohon B+: Nod tidak menyimpan data, jadi satu nod boleh menyimpan lebih banyak kunci. Ia boleh menjadikan pokok lebih pendek, jadi bilangan operasi IO adalah lebih sedikit. Prestasi pertanyaan adalah stabil: setiap pertanyaan merentasi dari nod akar ke nod daun Panjang laluan pertanyaan adalah sama, iaitu, kecekapan setiap pertanyaan adalah setara Kerumitan masa ditetapkan pada O(log(n))
untuk nod daun Penunjuk: Nod daun bersebelahan pokok B+ disambungkan melalui penunjuk. membentuk senarai terpaut tersusun, yang memudahkan carian julat
3 Operasi indeks
-- 在创建表的时候,直接在字段名后指定 primary key create table user1(id int primary key, name varchar(30)); -- 在创建表的最后,指定某列或某几列为主键索引 create table user2(id int, name varchar(30), primary key(id)); -- 创建表以后再添加主键 create table user3(id int, name varchar(30)); alter table user3 add primary key(id);
-- 在表定义时,在某列后直接指定unique唯一属性。 create table user4(id int primary key, name varchar(30) unique); -- 创建表时,在表的后面指定某列或某几列为unique create table user5(id int primary key, name varchar(30), unique(name)); -- 创建表以后再添加unique create table user6(id int primary key, name varchar(30)); alter table user6 add unique(name);
--在表的定义最后,指定某列为索引 create table user8(id int primary key, name varchar(20), email varchar(30), index(name) ); --创建完表以后指定某列为普通索引 create table user9(id int primary key, name varchar(20), email varchar(30)); alter table user9 add index(name); -- 创建一个索引名为 idx_name 的索引 create table user10(id int primary key, name varchar(20), email varchar(30)); create index idx_name on user10(name);
*********** 1. baris ** * ********Jadual: barang Bukan_unik: 0 Nama_kunci: PRIMER Seq_in_index: 1
Nama_lajur: goods_id Pengumpulan: A
Kardinaliti: 0
Sub_bahagian: NULL
Dibungkus: NULL
Nol:
Jenis_Indeks: BTREE Ulasan:
1 baris dalam set (0.00 saat)
mysql> alter table user10 drop index idx_name;
jatuhkan nama indeks pada nama jadual
mysql> drop index name on user8
Atas ialah kandungan terperinci Apakah prinsip pengindeksan dan strategi pengoptimuman pangkalan data MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!