MySQL索引建立及優化

2021-08-18 06:58:04 字數 1198 閱讀 8016

聯合索引中 索引建立在離散度大的字段上面

離散度指利用count(distinct ..)獲取欄位的唯一值,唯一值越多的離散度越大

索引的優化----重複及冗餘索引

重複索引:指相同的列以相同的順序建立的同型別的索引,如下表

create table if not exists test(

id smallint primary key auto_increment,

name char(10) not null,

unique(id)

)engine=innodb;

冗餘索引:指多個索引的字首列相同,或是在聯合索引中包含了主鍵的索引,如下表

create table if not exists test(

id smallint primary key auto_increment,

name char(10) not null,

key(name,id)

)engine=innodb;

如何發現資料庫中的重複和冗餘索引

1.進入mysql自帶的information_schema-----use information_schema;

2.執行如下sql語句

select a.table_schema as '資料庫名',a.table_name as '表名',a.index_name as '索引一',b.index_name 

as '索引二',a.column_name as '重複列名' from statistics as a

join statistics as b on a.table_schema = b.table_schema and a.table_name = b.table_name 

and a.column_name = b.column_name and a.seq_in_index = b.seq_in_index

where a.seq_in_index = 1 and a.index_name <>b.index_name;

Mysql 索引及優化

索引是什麼?相信大家都用過字典。你是怎麼從厚厚的新華字典中找到你需要找到的那個字的呢?又是怎麼從一本書中快速定位到你需要的章節?我們都是通過書中的目錄,然後根據目錄中的頁碼定位到我們要的資訊。同樣在mysql中也是這樣為我們準備了乙份目錄。當你去通過sql語句查詢的時候用不用索引,以及怎麼用索引。決...

mysql索引及優化

mysql的索引可以從不同的維度來進行區分,如下 這是最基本的索引型別,基於普通字段建立的索引,沒有任何限制。與 普通索引 類似,不同的就是 索引欄位的值必須唯一,但允許有空值 在建立或修改表時追加唯一 約束,就會自動建立對應的唯一索引。它是一種特殊的唯一索引,不允許有空值。在建立或修改表時追加主鍵...

MySQL優化(三) 索引原理及索引優化

b tree索引,它是目前關係型資料庫中查詢資料最為常用和有效的索引,大多數儲存引擎都支援這種索引。使用b tree這個術語,是因為mysql在create table或其它語句中使用了這個關鍵字,但實際上不同的儲存引擎可能使用不同的資料結構,比如innodb就是使用的b tree。中的b是指bal...