1. 程式人生 > 其它 >資料庫索引的初步瞭解和使用

資料庫索引的初步瞭解和使用

技術標籤:SQL

資料庫中的索引型別和方法


提示:文章寫完後,目錄可以自動生成,如何生成可參考右邊的幫助文件

文章目錄


前言

在使用資料庫中的過程中,因為資料量的增加導致程式在訪問資料庫的速度要求高,準確快速定位展示資料就是最終的目標,個人認為能實現快速和準確就是最重要的,畢竟實現這兩個要求在業務場景複雜的情況下也是不容易的…


# 一、索引的型別? 在我們給資料庫的表進行操作時,可以根據實際情況給相應的欄位新增索引,應用具體的索引型別和索引方法,其中索引型別在mysql中通常包含四種:
Normal ---  普通索引

UNIQUE --- 唯一索引

FULLTEXT --- 全文索引

SPATIAL --- 空間索引

普通索引:(個人情況出發,別槓我認輸)使用最多,大多數情況下都可使用,提升查詢的效率

唯一索引:表示唯一性,該索引欄位值不會重複,如身份證等,遇到相應的場景時可設定為unique,比如在註冊的時候,使用者的個人賬號Account不能重複,但是會出現多個使用者同時註冊的情況並且Account一致,那這樣的話同步進行則會導致兩條記錄都插入成功,業務和邏輯上是不合理的,使用鎖的話會導致其他使用者需要等待,那麼這個時候只要給Account欄位新增唯一索引即可避免這種情況。

全文索引:通常用於長文字檢索的情況下,個人用的不多,沒得具體場景介紹,有興趣bd

空間索引:對空間資料型別的欄位建立的索引,MYSQL中的空間資料型別有4種,分別是GEOMETRY、POINT、LINESTRING、POLYGON。這個使用要求較嚴格,建立的列要求NOT NULL,並且是在MYISAM儲存引擎的表上支援,常用INNODB就沒有然後了…

二、索引的方法(BTREE 、 HASH)

在效率上HASH可以說是首選,檢索效率非常高,一次定位,Hash 索引是將索引鍵通過 Hash 運算之後,將 Hash運算結果的 Hash 值和所對應的行指標資訊存放於一個 Hash 表中。但是限制的地方較多,如:

1 不能應用於範圍查詢,經過hash演算法計算後的值得大小關係無法保持和之前一致;
在遇到大量hash值相同的情況下效率不一定高於btree;

2 無法避免全表掃描,hash索引是將索引鍵通過相應的hash計算得到hash值,
將對應的hash值和指標資訊存放在hash表中,上面說到存在相同hash值得情況,
所以即使能取到滿足hash鍵值得記錄,得到具體資料還是要訪問表中的具體資料來進行對比,得到相應的結果;

BTREE則是在樹狀結構上進行查詢,從根節點到分支節點進行多次I/O訪問,效率自然不高,但是實用(普遍性高,如同國民都會打乒乓球,但是出類拔萃頂尖的技術人還是不多的,因為要求高,所以很多人只會簡單的普遍技巧(BTREE)但是也足夠了)

總結

使用頻繁的組合為普通索引NORMAL+BTREE索引方法,保證唯一性則使用UNIQUE的索引型別,其他場景我也沒用過,別問,問就是沒有再毒打一頓
在這裡插入圖片描述