資料庫索引理論

2021-09-28 19:26:34 字數 1623 閱讀 7682

資料庫索引好比是一本書前面的目錄,能夠提高資料庫的查詢速度。

字典是最好的模擬:

拼音查字法把拼音首字母相同的字放在一起,便於人們根據讀音查詢,資料庫中的聚簇索引的原理就是這樣。

部首查字法把特定部首的字的頁數記錄下來,根據頁數去查詢相應的字,資料庫中的非聚簇索引的原理就是這樣。

優點

1、大大加大資料檢索速度

2、加速表與表的連線

3、減少查詢中分組和排序的時間

缺點:

1、索引需要佔據額外的儲存空間

2、每次對相應的列進行插入和更新時,對應的索引也會重建

3、建立索引和維護索引需要耗時

定義:資料行存放的物理順序與列值(一般是主鍵)的邏輯順序相同,乙個表中只能有乙個聚集索引。

資料庫中存放方式:

位址id地區

0x011北京

0x022上海

0x033天津

葉子節點存的是整行資料,直接通過這個聚集索引的鍵值找到某行,非常快捷。

注:mysql中沒有cluster索引的概念,只有innodb主鍵是使用cluster方式儲存的。

下面通過例項簡單介紹這幾個名詞:

1、單列索引

任務:mysql>查詢name(城市名)為haag,countrycode(城市碼)為nld,district(地區)為zuid-holland的id號。

select id from city where name='haag' and countrycode='nld' and district='zuid-holland'
由於表比較大,我們不想全表掃瞄,並且表修改的可能性很小,我們在name上建立單列索引:

alter table city add index index_name (name);
與執行全表搜尋相比,效率高很多。每次搜尋的範圍限定在name='haag'內,但如果name='haag'的行數很多,仍需要掃瞄大量資料,搜尋效率依舊會不理想。

2、多列索引

使用多列索引,我們不用掃瞄任何記錄,直接獲得最終結果。

alter table city add index indexs (name, countrycode, district);
3、最左字首原則我們建立了上述的多列索引後,相當於建立了(name)單列索引、(name,countrycode)組合索引、(name,countrycode,district)組合索引。

資料庫 資料庫索引

索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...

理論 資料庫設計

資訊的不可表示問題 資訊的冗餘問題 函式依賴 x函式決定y 或 y函式依賴於x 記作x y,稱x為決定因素 如s sn,s c g 如果x y,但y 不包含於 x,則稱其為非平凡的函式依賴,否則稱為平凡的函式依賴 如 s sn sn是平凡的函式依賴 在r u 中,如果x y,且對於任意x的真子集x ...

資料庫理論總結

1 無資料庫,使用磁碟檔案儲存資料 2 層次結構模型資料庫 3 網狀模型結構資料庫 4 關係結構模型資料庫 使用二維 table 來儲存資料 5 關係 物件模型資料庫 orm 從物件到資料庫 6 分布式資料庫 nosql mongodb 3.1 c programdate mysql mysql s...