索引(Index)是幫助MySQL有效率地取得資料的資料結構。
下邊是自己整理的資料與自己的學習總結,做一個總結。
一.真的有必要使用索引嗎?
不是每一個性能問題都可以通過創建一個索引來解決;有很多其它解決性能問題的方式
a).各個應用層的緩存,
b).調優數據庫參數和緩衝區大小,
c).調優資料庫連接池大小或線程池大小,
d).調整資料庫事務隔離級別,
f).在夜間安排批量刪除,避免不必要的鎖表,
其它等等。
二.mysql索引類型normal,unique,full text的區別
1.PRIMARY, INDEX, UNIQUE 這3種是一類
normal:不表示普通索引
允許重複的索引,如果該字段資訊保證不會重複例如身份證號用作索引時,可設置為unique,特殊的,主鍵primary_key默認非空唯一2.FULLTEXT 是全文索引,用於在一篇文章中,檢索文字訊息的。 full text: 表示 全文搜尋的索引。 FULLTEXT 用來搜尋很長一篇文章的時候,效果最好。用在比較短的文本,如果就一兩行字的,普通的 INDEX 也可以。 總結,索引的類別由建立索引的字段內容特性來決定,通常是normal最常見。 詳細資料參考:http://blog.sina.com.cn/s/blog_887d00920100wgf3.html在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-索引總結的內容,更多相關內容請關注PHP中文網(www.php.cn)!