資料庫 索引優化策略

2021-09-01 07:46:07 字數 1883 閱讀 6862

關於什麼是索引,如何建立索引,索引的優缺點等,請移步我的另外一篇文章mysql索引簡談

一句話,為了加快查詢效率。注意這裡的「查詢」,而不是增刪改。建立索引的列,一旦發生了增加、更新或刪除操作,索引是需要維護的,此外不宜建立大量的索引,索引也占用磁碟空間。建立索引,應該權衡(查詢)與(磁碟占用、維護索引)兩者的代價,從而使整個資料庫的效能最優。

資料庫以查詢為主,那麼在經常查詢的列上建立索引。

在需要進行join的字段上建立索引,哪些被join起來的字段,也應該是相同的型別。

對多個列可以建立聯合索引,不過在查詢的時候,查詢語句需要滿足最左字首原則。

可以在主鍵、外來鍵上建立索引,可以確保主鍵的唯一性。

資料長度比較小的列上,可以建立索引,一來索引檔案比較小,二來記憶體中可以裝載更多的索引鍵。

如果乙個列是比較長的字串,為了加快這種長列的查詢速度,可以為其建立字首索引。

以增刪改為主的資料庫,應該避免建立過多的索引。

區分度比較小的列,或者是查詢基本用不到的列,應該避免建立索引。

表的記錄太少的話,避免建立索引,此時建立索引與不建立索引的效果一致,而此時還要建立索引的話,會占用額外的空間。

select * from book 當語句中沒有where子句時,那肯定是不走索引的。

select * from book where name(書名,varchar型別) like '%中',不走索引,只要%出現在第乙個位置,那麼就不走索引。

select name from book where sell_num(銷量,數值型別) > 100,數值型別進行不等操作時,不走索引。

select name from book where sell_num/2=100,對銷量進行表示式操作或者是函式操作的,不走索引。

可以將sql語句改為 select name from book where sell_num=200

select name from book where author(作者,varchar型別)=『tom』 or author='jack',使用or進行連線的,也不走索引,應改為select name from book where author='tom' union all select name from book where author='jack'

select name from book where translator(譯者,varchar型別) is null,即進行null值判斷,不走索引,可以在插入書籍資訊的時候,譯者為null的話就存入0,之後使用select name from book where translator='0'來查詢譯者為null的書籍名。

select name from book where version(版本,varchar型別)=1.0,即需要進行隱式型別轉換的,這裡是從varchar型別轉化為浮點型別,不會走索引,將1.0改為『1.0』,則走索引。

在組合索引中的查詢不滿足最左字首原則時,查詢不走索引。如果我們對book表建立聯合索引(a,b,c),那麼以下的語句是走索引的

select * from book where a='x' ;

select * from book where a='x' and b='y' ;

select * from book where a='x' and c='z ;

select * from book where a='x' and b='y and c='z' ;

而以下語句不走索引

select * from book where b='y' ;

select * from book where c='z' ;

select * from book where b='y' and c='z' ;

資料庫 索引優化策略

關於什麼是索引,如何建立索引,索引的優缺點等,請移步我的另外一篇文章mysql索引簡談 一句話,為了加快查詢效率。注意這裡的 查詢 而不是增刪改。建立索引的列,一旦發生了增加 更新或刪除操作,索引是需要維護的,此外不宜建立大量的索引,索引也占用磁碟空間。建立索引,應該權衡 查詢 與 磁碟占用 維護索...

資料庫索引優化策略

一句話,為了加快查詢效率。注意這裡的 查詢 而不是增刪改。建立索引的列,一旦發生了增加 更新或刪除操作,索引是需要維護的,此外不宜建立大量的索引,索引也占用磁碟空間。建立索引,應該權衡 查詢 與 磁碟占用 維護索引 兩者的代價,從而使整個資料庫的效能最優。首先介紹一下聯合索引。聯合索引其實很簡單,相...

mysql資料庫索引優化策略

1.myisam,innodb錶用的都是b tree索引,都是 排好序的快速查詢結構 2.memory錶用的是hash索引 3.優缺點 1 hash索引的查詢理論的時間複雜度是0,但是無法對範圍查詢進行優化,無法對排序進行優化,必須回行取資料,無法i用字首索引 2 b tree可以利用做字首進行優化...