亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

MySQL數(shù)據(jù)庫索引原理及優(yōu)化策略

瀏覽:194日期:2023-05-05 10:12:01
目錄
  • 1 索引
    • 索引概念
    • 索引作用
    • 索引的使用場景
  • 2 索引分類
    • B樹索引和B+樹索引區(qū)別
  • 3 索引操作
    • 創(chuàng)建主鍵索引
    • 唯一索引的創(chuàng)建
    • 普通索引的創(chuàng)建
    • 查詢索引
    • 刪除索引
    • 索引創(chuàng)建原則

1 索引

索引概念

索引是一種特殊的文件,包含著對數(shù)據(jù)表里所有記錄的引用指針。可以對表中的一列或多列創(chuàng)建索引,并指定索引的類型,各類索引有各自的數(shù)據(jù)結(jié)構實現(xiàn)。

索引作用

數(shù)據(jù)庫中的表、數(shù)據(jù)、索引之間的關系,類似于書架上的圖書、書籍內(nèi)容和書籍目錄的關系,索引所起的作用類似書籍目錄,可用于快速定位、檢索數(shù)據(jù)。索引可以極大地提高數(shù)據(jù)庫的性能。

索引的使用場景

要考慮對數(shù)據(jù)庫表的某列或某幾列創(chuàng)建索引,需要考慮以下幾點:

  • 數(shù)據(jù)量較大,且經(jīng)常對這些列進行條件查詢。
  • 該數(shù)據(jù)庫表的插入操作,及對這些列的修改操作頻率較低。
  • 索引會占用額外的磁盤空間。

2 索引分類

  • 從索引存儲結(jié)構劃分:BTree索引、Hash索引、FULLTEXT全文索引、RTree索引
  • 從應用層次劃分:普通索引,唯一索引,主鍵索引,復合索引
  • 從索引鍵值類型劃分,主鍵索引,輔助索引(二級索引)
  • 從數(shù)據(jù)存儲和索引鍵值邏輯關系劃分:聚集索引(聚簇索引)非聚集泰引(非聚簇索)
  • 從索引列數(shù)量劃分:單列索引,復合索引

B樹索引和B+樹索引區(qū)別

區(qū)別:

數(shù)據(jù)的保存位置不同:B+樹保存在葉子節(jié)點,B樹保存在所有的節(jié)點中

體現(xiàn)出B+樹優(yōu)勢:節(jié)點不存儲data,這樣一個節(jié)點就可以存儲更多的key。可以使得樹更矮,所以IO操作次數(shù)更少。 查詢性能穩(wěn)定:每次查詢都是從根節(jié)點遍歷到葉子節(jié)點,查詢路徑長度相同,即每次查詢效率相當,時間復雜度固定是O(log(n))

葉子節(jié)點的指向:B+樹相鄰的葉子節(jié)點通過指針相連,B樹沒有

體現(xiàn)出B+樹優(yōu)勢:所有葉子節(jié)點形成有序鏈表,便于范圍查找

3 索引操作

創(chuàng)建主鍵索引

-- 在創(chuàng)建表的時候,直接在字段名后指定 primary keycreate table user1(id int primary key, name varchar(30));-- 在創(chuàng)建表的最后,指定某列或某幾列為主鍵索引create table user2(id int, name varchar(30), primary key(id));-- 創(chuàng)建表以后再添加主鍵create table user3(id int, name varchar(30));alter table user3 add primary key(id);

主鍵索引的特點:

  • 一個表中,最多有一個主鍵索引,當然可以使符合主鍵
  • 主鍵索引的效率高(主鍵不可重復)
  • 創(chuàng)建主鍵索引的列,它的值不能為null,且不能重復
  • 主鍵索引的列基本上是int

唯一索引的創(chuàng)建

-- 在表定義時,在某列后直接指定unique唯一屬性。create table user4(id int primary key, name varchar(30) unique);-- 創(chuàng)建表時,在表的后面指定某列或某幾列為uniquecreate table user5(id int primary key, name varchar(30), unique(name));-- 創(chuàng)建表以后再添加uniquecreate table user6(id int primary key, name varchar(30));alter table user6 add unique(name);

唯一索引的特點:

  • 一個表中,可以有多個唯一索引
  • 查詢效率高
  • 如果在某一列建立唯一索引,必須保證這列不能有重復數(shù)據(jù)
  • 如果一個唯一索引上指定not null,等價于主鍵索引

普通索引的創(chuàng)建

--在表的定義最后,指定某列為索引create table user8(id int primary key,name varchar(20),email varchar(30),index(name));--創(chuàng)建完表以后指定某列為普通索引create table user9(id int primary key, name varchar(20), email varchar(30));alter table user9 add index(name); -- 創(chuàng)建一個索引名為 idx_name 的索引create table user10(id int primary key, name varchar(20), email varchar(30));create index idx_name on user10(name);

普通索引的特點:

  • 一個表中可以有多個普通索引,普通索引在實際開發(fā)中用的比較多
  • 如果某列需要創(chuàng)建索引,但是該列有重復的值,那么我們就應該使用普通索引

查詢索引

  • show keys from 表名

mysql> show keys from goods\G
*********** 1. row ***********
Table: goods <= 表名
Non_unique: 0 <= 0表示唯一索引
Key_name: PRIMARY <= 主鍵索引
Seq_in_index: 1
Column_name: goods_id <= 索引在哪列
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE <= 以二叉樹形式的索引
Comment:
1 row in set (0.00 sec)

  • show index from 表名;
  • desc 表名

刪除索引

  • 刪除主鍵索引: alter table 表名 drop primary key;
  • 其他索引的刪除: alter table 表名 drop index 索引名; 索引名就是show keys from 表名中的Key_name 字段
mysql> alter table user10 drop index idx_name;
  • drop index 索引名 on 表名
mysql> drop index name on user8

索引創(chuàng)建原則

  • 比較頻繁作為查詢條件的字段應該創(chuàng)建索引
  • 唯一性太差的字段不適合單獨創(chuàng)建索引,即使頻繁作為查詢條件
  • 更新非常頻繁的字段不適合作創(chuàng)建索引
  • 不會出現(xiàn)在where子句中的字段不該創(chuàng)建索引

到此這篇關于MySQL數(shù)據(jù)庫索引原理及優(yōu)化策略的文章就介紹到這了,更多相關MySQL數(shù)據(jù)庫索引內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持!

標簽: MySQL
相關文章:
主站蜘蛛池模板: 国产一级黄色录像 | 欧美精品亚洲精品日韩专区 | 久久er热在这里只有精品66 | 亚洲七七久久精品中文国产 | 日本欧美不卡一区二区三区在线 | 日韩三级黄色 | 青草视频免费观看 | 久久777| 国产一级在线免费观看 | 久久视频在线免费观看 | www.久久色 | 国产美女天天爽在线hd | 在线观看精品福利片香蕉 | 国产精品久久久久久吹潮 | 51国产午夜精品免费视频 | 日欧毛片 | 成人久久18免费软件 | 91麻豆传传媒波多野衣久久看 | 免费国产综合视频在线看 | 国产伦精品一区二区三区免费 | 亚洲黄色第一页 | 日本xxxxx黄区免费看动漫 | 三级午夜宅宅伦不卡在线 | 国产精品亚洲片在线va | 亚洲酒色1314狠狠做 | 欧美性一级交视频 | 综合欧美视频一区二区三区 | 国产精品巨乳 | 免费播放国产性色生活片 | 国产精品无卡无在线播放 | 特黄特色的大片观看免费视频 | 国产图片综合区 | 亚洲国产高清视频在线观看 | 国产网址在线观看 | 国产精品久久久久久一级毛片 | 青青久久精品国产免费看 | 女人与zzzxxxx0oo0| 国产在视频线精品视频 | 高h喷水荡肉爽文np欲 | 亚欧精品一区二区三区四区 | 青青国产精品 |