MYSQL 索引複習

2021-10-20 09:14:19 字數 1497 閱讀 9660

索引

索引是在儲存引擎層實現的,而不是在伺服器上實現的,所以不同的儲存引擎具有不用的索引型別和實現。

索引的作用

建表後新增索引:

alter table table_name add index index_name(column_list)
//普通索引

alter table table_name add index index_name (column_list) ;

//唯一索引

alter table table_name add unique (column_list) ;

//主鍵索引

alter table table_name add primary key (column_list) ;

create index index_name on table_name(username(length));
刪除索引

drop index index_name  on table_name ;
b+樹索引

它是mysql大多儲存引擎的預設索引型別。

innodb的b+ 樹索引分為主索引和輔助索引。主索引的葉子節點data域記錄著完整的資料記錄,這種索引方式被稱為聚簇索引。因為無法吧資料存在兩個不同的地方,索引一張表只能有乙個聚簇索引。

輔助索引的葉子節點的data域記錄著主鍵的值,因此在使用輔助索引進行查詢時,需要先找到主鍵值,然後再到主索引中進行查詢,這個過程也稱之為回表。

主鍵索引

主鍵:某乙個屬性可以唯一的標識一條記錄

特點:雜湊索引

雜湊索引能以o(1)時間進行查詢,但是失去了有序性。

innodb 儲存引擎有乙個特殊的功能叫「自適應雜湊索引」,當某個索引值被使用的非常頻繁時,會在 b+tree 索引之上再建立乙個雜湊索引,這樣就讓 b+tree 索引具有雜湊索引的一些優點,比如快速的雜湊查詢。

空間資料索引

myisam 儲存引擎支援空間資料索引(r-tree),可以用於地理資料儲存。空間資料索引會從所有維度來索引資料,可以有效地使用任意維度來進行組合查詢。

必須使用 gis 相關的函式來維護資料。

唯一索引

作用:避免用乙個表中某資料列中的值重複

與主鍵索引的區別:主鍵索引只能有乙個,唯一索引可以有多個

常規索引

作用:快速定位特定資料

注意:create table `result`(

-- 省略一些**

index/key `ind` (`studentno`,`subjectno`) -- 建立表時新增 ind是索引名

-- 建立後新增

alter table `result` add index `ind`(`studentno`,`subjectno`);

全文索引

作用:快速定位特定資料,用於查詢文字中的關鍵字,而不是直接比較是否相同

注意:

MySQL複習 索引

今天覆習了mysql的索引,知道了怎麼新增 刪除索引,但是突然有個疑惑,我知道新增索引可以提高資料查詢的速率,但是不知道為什麼可以提高效率,現在就來聊聊索引的手段。我知道,如果乙個字段沒有新增索引,查詢一般是按照順序進行全盤搜尋,這樣子做很耗費時間,特別是資料庫裡面的資料達到百萬級別時,這時候索引的...

精 MySQL 索引複習篇

mysql索引實現 假設我們有一張資料表 employee 員工表 該錶有三個字段 列 分別是name age 和address。假設表employee有上萬行資料 這公司還真大 現在需要從這個表中查詢出所有名字是 zhangsan 的雇員資訊,你會快速的寫出sql語句 select name,ag...

mysql複習 mysql複習

建立資料庫 create database test 建立表 use test create table user id int,name varchar 255 time date,age int 插入資料 第一種方式 insert into 表名 values 值1,2,3 例 insert i...