聯合索引中 索引建立在離散度大的字段上面
離散度指利用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_nameas '索引二',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...