Mysql優化4 合適的索引

2021-08-01 23:58:39 字數 2154 閱讀 6379

1、新增

1.1 主鍵索引新增:把一張表的乙個字段設定為主鍵 該欄位就位主鍵索引 id int unsigned primary key auto_increment

unsigned 有符號和無符號的區別:

在mysql中整型範圍:

型別                 大小            範圍(有符號)                              範圍(無符號) 用途

tinyint           1 位元組    (-128,127)                                    (0,255) 小整數值

smallint        2 位元組    (-32 768,32 767)                           (0,65 535) 大整數值

mediumint     3 位元組    (-8 388 608,8 388 607)                  (0,16 777 215) 大整數值

int或integer  4 位元組    (-2 147 483 648,2 147 483 647)     (0,4 294 967 295) 大整數值

1.2 普通索引

一般先建立表 然後再建立普通索引 create index 索引名稱  on table (列)

建立索引後比如再200w條資料 查詢速度相當快

為什麼建立索引之後查詢速度回如此之快

index_type 是二叉樹 btree

1.3 全文索引 fulltext

全文索引主要是針對檔案、文字的檢索 比如文章  主要針對myisam有用

針對英文有效 中文使用sphinx mysql自己提供的

1.4 唯一索引

unique 唯一索引  可以為空 並可以多個 有內容必須唯一

主鍵字段不能為空 並且

2、查詢索引

1、desc 名錶

2、show index from 表明

3、show keys from 表名

3、刪除索引

alter table 表名 drop index 索引名

刪除主鍵索引 alter table 表名 drop primary key 索引名稱

4、修改

先刪除在新增

1、索引使用有磁碟的占用 有索引檔案

2、索引查詢速度回變快  增刪修回去變慢 因為要平衡二叉樹

1、較為頻繁作為查詢條件的應該建立索引 肯定在where中經常出現 比如部門標號

2、唯一性太差的不適合作為索引 比如性別

3、更新頻繁的字段不適合作為索引 比如登入次數

4、不會出現在where條件的不適合做為索引

1、如果我們表中有復合索引(索引再多列上) 我們需要注意

比如 alter dept add index myind(dname,loc);

復合索引只要使用了左邊的列 一般都會使用索引

select * from dept where loc = 'd22'

使用了右邊的 沒有使用到索引

2、使用模糊查詢的時候 注意百分號位置 左邊用不到索引

select * from emp where dname like 『%技術部門』 用到索引  百分號再右邊才能用到索引,如果一定要使用 則使用全文索引

4、檢視索引的使用情況

show status like 『handler_read%』

知道就好 下圖:

MySQL 索引優化篇 4 索引的維護

帶你搞定mysql實戰,輕鬆對應海量業務處理及高併發需求,從容應對大場面試 如果英文不好的話,可以參考 searchdoc 翻譯的中文版本 舉個例子 對id 建立了多個索引 重複索引 primary key id 主鍵索引 unique key id 唯一索引 index id 普通索引 主鍵上my...

MySQL高階 索引優化案例4

1 員工表的建表語句 create table emps id int primary key auto increment,name varchar 20 not null default comment 姓名 age int not null default 0 comment 年齡 pos v...

mysql 優化(4)索引覆蓋和最優索引

索引覆蓋 很重要的 乙個概念 就是在索引上查詢!如果查詢的列恰好是索引的一部分,那麼查詢只需要在索引檔案上進行 不需要回行到磁碟再找資料.這種查詢速度非常快,稱為 索引覆蓋 非聚促索引 索引檔案對應了資料要回行 浪費掉了時間 索引和資料區別 索引是高效組織起來的樹 節點 查詢樹葉 結構更優於資料 索...