基於myisam儲存引擎做報表、索引
阿新 • • 發佈:2022-04-11
(1)很多年前的報表系統:
(2)B-樹
左邊小,右邊大,介於中間進入下一層
(3)B+樹
非葉子節點,不儲存data,只儲存索引key
(4)b+樹優化
葉子檢點之間加順序指標,方便範圍查詢
(5)myisam儲存引擎的索引
資料檔案和索引檔案是分開的
(6)innodb儲存引擎的索引
必須有主鍵,資料檔案本身就是個索引檔案,這個索引預設根據主鍵建立的,叫做聚簇索引
索引檔案既是索引檔案,又是資料檔案,查詢到索引位置,再取資料
對非主鍵欄位建立的索引
name=索引 --> 葉子節點 --> 主鍵 --> 根據主鍵去找資料
備註:
1. 不要用長字串欄位做索引,會佔用很大空間
2. 主鍵索引儘量設定 auto-increase
(7)索引的使用規則
select * from table where a=1 and b=2 and c=3,怎麼建索引?
1. 會根據平時常用幾個欄位,建立一個聯合索引
<1> 全列匹配
<2> 最左字首匹配原則
<3> 字首匹配 %
<4> 範圍列匹配
<5> 包含函式
(8)索引的缺點和注意項
缺點:佔用磁碟檔案,高併發下頻繁插入和修改索引會導致效能損耗
建議:儘量建立少的索引,一個表一兩個索引
1. status就2個值0和1,建立索引,幾乎跟全表掃描差不多
2. select count(distinct col)/count(*) 的佔比
3. 長字串欄位,可以用前幾個字元建立索引
(9)程式碼處理
儘量SQL語句單表查詢,避開join,需要join時儘量在Java程式碼裡處理
用mysql當線上即時儲存,存資料,簡單取資料,不要在mysql中進行計算