mysql索引
索引優點
1.可以通過建立唯一索引或者主鍵索引,保證資料的唯一性.
2.提高檢索的資料效能
3.在表連線的連線條件 可以加速表與表直接的相連
4.建立索引,在查詢中使用索引 可以提高效能
索引缺點
1.在建立索引和維護索引 會耗費時間,隨著資料量的增加而增加
2.索引檔案會占用物理空間,除了資料表需要占用物理空間之外,每乙個索引還會占用一定的物理空間
3.當對表的資料進行 insert,update,delete 的時候,索引也要動態的維護,這樣就會降低資料的維護速度,
(建立索引會占用磁碟空間的索引檔案。一般情況這個問題不太嚴重,但如果你在乙個大表上建立了多種組合索引,索引檔案的會膨脹很快)。
使用索引需要注意的地方
1.在經常需要搜尋的列上,可以加快索引的速度
2.主鍵列上可以確保列的唯一性
3.在表與表的而連線條件上加上索引,可以加快連線查詢的速度
4.在經常需要排序(order by),分組(group by)和的distinct 列上加索引 可以加快排序查詢的時間, (單獨order by 用不了索引,索引考慮加where 或加limit)
5.在一些where 之後的 < <= > >= betwe in 以及某個情況下的like 建立欄位的索引(b-tree)
6.like語句的 如果你對nicknadqnztcwme欄位建立了乙個索引.當查詢的時候的語句是 nickname lick '%abc%' 那麼這個索引講不會起到作用.而nickname lick 'abc%' 那麼將可以用到索引
7.索引不會包含null列,如果列中包含null值都將不會被包含在索引中,復合索引中如果有一列含有null值那麼這個組合索引都將失效,一般需要給預設值0或者 ' '字串
8.使用短索引,如果你的乙個欄位是char(32)或者int(32),在建立索引的時候指定字首長度 比如前10個字元 (前提是多數值是唯一的..)那麼短索引可以提高查詢速度,並且可以減少磁碟的空間程式設計客棧,也可以減少i/0操作.
9.不要在列上進行運算,這樣會使得mysql索引失效,也會進行全表掃瞄
10.選擇越小的資料型別越好,因為通常越小的資料型別通常在磁碟,記憶體,cpu,快取中 占用的空間很少,處理起來更快
什麼情況下不建立索引
1.查詢中很少使用到的列 不應該建立索引,如果建立了索引然而還會降低mysql的效能和增大了空間需求.
2.很少資料的列也不應該建立索引,比如 乙個性別字段 0或者1,在查詢中,結果集的資料佔了表中資料行的比例比較大,mysql需要掃瞄的行數很多,增加索引,並不能提高效率
3.定義為text和image和bit資料型別的列不應該增加索引,
4.當表的修程式設計客棧改(update,insert,delete)操作遠遠大於檢索(select)操作時不應該建立索引,這兩個操作是互斥的關係
MySQL索引優化策略分析
explain的用法 執行計畫 explain select from pms product where id 1 組合索引一定是最左匹配原則 如果你在表上建立了很多組合索引,索引檔案膨脹,修改 刪除 更新會比較慢expalin的作用 type 查詢的效果從上到下越來越差 優勢 提高查詢速度 表連...
MySQL 索引策略
索引 index 是幫助mysql高效獲取資料的資料結構,這種資料結構是需要額外的寫入和儲存為代價來提高表上資料檢索的速度。一旦建立了索引後,資料庫中查詢優化器使用索引來快速定位資料,然後就無需掃瞄表中給定查詢的每一行了。索引本身也很大,不可能全部儲存在記憶體中,一般以索引檔案的形式儲存在磁碟上。當...
mysql索引使用策略和優化
1.1 索引選擇原則 較頻繁的作為查詢條件的字段應該建立索引 唯一性太差的字段不適合單獨建立索引,即使頻繁作為查詢條件 更新非常頻繁的字段不適合建立索引 不會出現在 where 子句中的字段不該建立索引 1.2 索引選擇原則描述 1.3 索引選擇注意事項 既然索引可以加快查詢速度,那麼是不是只要是查...