資料庫索引

2021-09-22 01:39:44 字數 2104 閱讀 3299

1,原理:對要查詢的字段建立索引其實就是把該字段按照一定的方式排序;建立索引只對該字段有用,如果查詢的字段改變,這個索引也就無效了。

2,為什麼索引會增加速度:db在執行一條sql語句的時候,預設的方式是根據搜尋條件進行全表掃瞄,遇到匹配條件的就加入搜尋結果集合。如果我們對某一欄位增加索引,查詢時就會下去索引列表中一次定位到特定值的行數,大大減少遍歷匹配的行數,所以能明顯增加查詢速度。

聚集索引和非聚集索引:

鏈結文章總結

乙個加了主鍵的表,並不能被稱之為。乙個沒加主鍵的表,它的資料無序的放置在磁碟儲存器上,一行一行的排列的很整齊, 跟我認知中的很接近。如果給表上了主鍵,那麼表在磁碟上的儲存結構就由整齊排列的結構轉變成了樹狀結構,也就是平衡樹結構,換句話說,就是整個表就變成了乙個索引。

乙個表只能有乙個聚集索引,因為主鍵的作用就是把的資料格式轉換成索引(平衡樹)的格式放置。

非聚集索引和聚集索引的區別在於, 通過聚集索引可以查到需要查詢的資料, 而通過非聚集索引可以查到記錄對應的主鍵值 , 再使用主鍵的值通過聚集索引查詢到需要的資料

不管以任何方式查詢表, 最終都會利用主鍵通過聚集索引來定位到資料,聚集索引(主鍵)是通往真實資料所在的唯一路徑。

索引的缺點

事物都是有兩面的, 索引能讓資料庫查詢資料的速度上公升, 而使寫入資料的速度下降,原因很簡單的, 因為平衡樹這個結構必須一直維持在乙個正確的狀態, 增刪改資料都會改變平衡樹各節點中的索引資料內容,破壞樹結構, 因此,在每次資料改變時, dbms必須去重新梳理樹(索引)的結構以確保它的正確,這會帶來不小的效能開銷

每次給字段建乙個新索引, 欄位中的資料就會被複製乙份出來, 用於生成索引。 因此, 給表新增索引,會增加表的體積, 占用磁碟儲存空間。

索引的種類

普通索引:index

唯一索引:unique index

主鍵索引:primary key

全文索引:fulltext

如何建立索引

建立表:create table person (lastname varchar(30) , firstname varchar(30),address varchar(30) , age int(10));

建立索引

索引被建立於已有的表中,它可使對行的定位更快速更有效。可以在**的乙個或者多個列上建立索引,每個索引都會被起個名字。使用者無法看到索引,它們只能被用來加速查詢。

注釋:更新乙個包含索引的表需要比更新乙個沒有索引的表更多的時間,這是由於索引本身也需要更新。因此,理想的做法是僅僅在常常用於搜尋的列上面建立索引。

唯一的索引(unique index)

在**上面建立某個乙個唯一的索引。唯一的索引意味著兩個行不能擁有相同的索引值。

create unique index 索引名稱

on 表名稱 (列名稱)

「列名稱」 規定你需要索引的列。

簡單的索引

本例會建立乙個簡單的索引,名為 「personindex」,在 person 表的 lastname 字段:

create index personindex

on person (lastname)

如果您希望以降序索引某個列中的值,您可以在列名稱之後新增保留字 desc:

create index personindex

on person (lastname desc)

假如您希望索引不止乙個列,您可以在括號中列出這些列的名稱,用逗號隔開:

create index personindex

on person (lastname, firstname)

上述內容均收集自網路。

資料庫 資料庫索引

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

資料庫mysql索引 資料庫 mysql索引

mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...

資料庫索引

索引 索引列唯一索引 主鍵索引 聚簇索引和非聚簇索引 如何建立索引 如何刪除索引 使用索引可快速訪問資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓 lname 列。如果要按姓查詢特定職員,與必須搜尋表中的所有行相比,索引會幫助您更快地獲得該資...