Mysql資料庫知識 Mysql索引總結

2022-04-08 04:37:32 字數 2318 閱讀 4699

mysql資料庫知識-mysql索引總結:

索引(index)是幫助mysql高效獲取資料的資料結構。 下邊是自己整理的資料與自己的學習總結,,做乙個彙總。

一.真的有必要使用索引嗎?

不是每乙個效能問題都可以通過建立乙個索引來解決;有很多其它解決效能問題的方式

a).各個應用層的快取,

b).調優資料庫引數和緩衝區大小,

c).調優資料庫連線池大小或者執行緒池大小,

d).調整資料庫事務隔離級別,

f).在夜間安排批量刪除,避免不必要的鎖表,

其它等等。

二.mysql索引型別normal,unique,full text的區別

1.primary, index, unique 這3種是一類

normal:表示普通索引

unique:表示唯一的,不允許重複的索引,如果該欄位資訊保證不會重複例如身份證號用作索引時,可設定為unique,特殊的,主鍵primary_key預設非空唯一

2.fulltext 是全文索引,用於在一篇文章中,檢索文字資訊的。

full text: 表示 全文搜尋的索引。 fulltext 用於搜尋很長一篇文章的時候,效果最好。用在比較短的文字,如果就一兩行字的,普通的 index 也可以。

總結,索引的類別由建立索引的字段內容特性來決定,通常normal最常見。 

三.索引總結

為了使索引的使用效率更高,在建立索引時,必須考慮在哪些欄位上建立索引和建立什麼型別的索引。 本小節將向讀者介紹一些索引的設計原則。乾貨呀!

1.選擇唯一性,單調性的索引   唯一性索引的值是唯一的,可以更快速的通過該索引來確定某條記錄。例如,學生表中學號是具有唯一性的字段。為該字段建立唯一性索引可以很快的確定某個學生的資訊。如果使用姓名的話,可能存在同名現象,從而降低查詢速度。單調性指的是數字遞增或遞減,比如id,這樣效率會高(7.mysql-聚簇索引之隨機主鍵的效率.note)   2.為經常需要排序、分組和聯合操作的字段建立索引   經常需要order by、group by、distinct和union等操作的字段,排序操作會浪費很多時間。如果為其建立索引,可以有效地避免排序操作。   3.為常作為查詢條件的字段建立索引   如果某個字段經常用來做查詢條件,那麼該字段的查詢速度會影響整個表的查詢速度。因此,為這樣的字段建立索引,可以提高整個表的查詢速度。   4.限制索引的數目   索引的數目不是越多越好。每個索引都需要占用磁碟空間,索引越多,需要的磁碟空間就越大。修改表時,對索引的重構和更新很麻煩。越多的索引,會使更新表變得很浪費時間。   5.盡量使用資料量少的索引   如果索引的值很長,那麼查詢的速度會受到影響。例如,對乙個char(100)型別的字段進行全文檢索需要的時間肯定要比對char(10)型別的字段需要的時間要多。避免不了,解決方法見6.   6.盡量使用字首來索引   如果索引欄位的值很長,最好使用值的字首來索引。例如,text和blog型別的字段,進行全文檢索會很浪費時間。如果只檢索欄位的前面的若干個字元,這樣可以提高檢索速度。 不錯的網路文章參考 :(mysql字首索引和索引選擇性)

在select中where條件的先後順序無所謂sql核心會排序優化,但是建立聯合索引時就有所謂了,遵循左字首原則。5.4 mysql-索引資料結構.note 最後結論

8.刪除不再使用或者很少使用的索引

表中的資料被大量更新,或者資料的使用方式被改變後,原有的一些索引可能不再需要。資料庫管理員應當定期找出這些索引,將它們刪除,從而減少索引對更新操作的影響

9.索引並不是越多越好,最多6個

索引固然可以提高相應的 select 的效率,但同時也降低了 insert 及 update 的效率,因為 insert 或 update 時有可能會重建索引,

所以怎樣建索引需要慎重考慮,視具體情況而定。乙個表的索引數最好不要超過 6 個,若太多則應考慮一些不常使用到的列上建的索引是否有必要。

10.emun 的情況或只有個位數級別的字段,沒必要加索引

極端點的情況,90萬的資料,source只有0和1兩個值,利用索引要先讀索引檔案,然後二分查詢,找到對應資料的資料磁碟指標,再根據讀到的指標再讀磁碟上對應的資料資料,影響結果集45萬。這種情況,和直接全表掃瞄那個快顯而易見。

11.索引對group by 有效

本質也是乙個排序的過程,而索引幫其實現6 mysql-索引優化策略.note 第三條

不知覺就看著這麼多行了,真實一下子也記不住呀,但是仔細想想上邊的每一條,在生產運用中還真該這麼注意,發現一些問題如果能注意到上邊的這麼幾條,還真有些道理。所以,總結如下:

mysql資料庫知識-mysql索引總結

注意:選擇索引的最終目的是為了使查詢的速度變快。上面給出的原則是最基本的準則,但不能拘泥於上面的準則。 讀者要在以後的學習和工作中進行不斷的實踐。根據應用的實際情況進行分析和判斷,選擇最合適的索引方式。 

MySQL資料庫知識彙總

mysql資料庫安裝 資料庫設計及規範 mysql mysq建表中的字段約束 mysql命令列基本操作 mysql 增 insert into 表名 欄位1,欄位2,欄位3 values 值1,值2,值3,刪 delete from 表名 where 限定條件 改 update 表名 set 欄位1...

mysql 資料庫知識整理

資料庫索引b 數,hash b 數是乙個平衡大多叉樹,搜尋效率基本相當 雜湊索引 採用一定的雜湊演算法,把鍵值換成新的雜湊值,檢索時不需要類似b 1 所有的非葉子節點只儲存關鍵字資訊。2 所有衛星資料 具體資料 都存在葉子結點中。3 所有的葉子結點中包含了全部元素的資訊。4 所有葉子節點之間都有乙個...

mysql資料庫小知識

本題考察mysql中的儲存引擎了解情況,innodb儲存引擎提供了具有提交 回滾和崩潰恢復能力的事務安全,但不支援全文索引。故c答案正確。本題是對mysql中字符集相關知識的考查。a選項錯誤,該系統變數為當前資料庫的預設字符集,下列為字符集相關系統變數 character set server 預設...