日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库索引的概念和分类

發(fā)布時間:2024/8/1 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库索引的概念和分类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是數(shù)據(jù)庫索引?

我們再平時的開發(fā)中免不了用到數(shù)據(jù)庫的索引,接下來就簡單說一下數(shù)據(jù)庫索引。

數(shù)據(jù)庫索引用來干什么?

數(shù)據(jù)庫索引就是為了提高數(shù)據(jù)的查詢速率。

數(shù)據(jù)庫索引有哪些?

  • 聚集索引:在數(shù)據(jù)庫中,所有行數(shù)都會按照主鍵索引排序。
  • 非聚集索引:就是給普通字段加上索引。
  • 聯(lián)合索引:好幾個字段組成的索引稱為聯(lián)合索引。
  • 索引的底層是?

    數(shù)據(jù)庫索引的底層是B+樹。
    B+樹的中間元素不儲存數(shù)據(jù),只儲存索引,數(shù)據(jù)存儲在B+樹的葉子節(jié)點處,一個節(jié)點可以存放多個數(shù)據(jù),查找一個節(jié)點的時候可以有多個元素,大大提升查找效率,這就是為什么數(shù)據(jù)庫索引用的就是B+樹,因為索引很大,不可能都放在內存中,所以通常是以索引文件的形式放在磁盤上,所以當查找數(shù)據(jù)的時候就會有磁盤I/O的消耗,而B+樹正可以解決這種問題,減少與磁盤的交互,因為進行一次I/O操作可以得到很多數(shù)據(jù),增大查找數(shù)據(jù)的命中率。

    索引在磁盤上的存儲是怎樣的?

    索引在磁盤上聚集存儲和非聚集存儲的方式是不同的。

  • 聚集索引在磁盤中的存儲: 聚集索引葉子結點存儲是表里面的所有行數(shù)據(jù); 每個數(shù)據(jù)頁在不同的磁盤上面
  • 非聚集索引在磁盤上的存儲:葉子結點存儲的是聚集索引鍵,而不存儲表里面所有的行數(shù)據(jù),所以在查找的時候,只能查找到聚集索引鍵,再通過聚集索引去表里面查找到數(shù)據(jù)
  • 索引的分類

    數(shù)據(jù)庫索引分為:

  • 主鍵索引(PRIMAY KEY)
  • 唯一索引(UNIQUE)
  • 常規(guī)索引(INDEX)
  • 全文索引(FULLTEXT)
  • 1. 主鍵索引(PRIMAY KEY)

    某一個屬性組能唯一標識一條記錄
    例如:員工表(員工編號,姓名,性別,部門等等),員工編號唯一標識,可以作為主鍵。
    主鍵索引是最常見的索引類型,它能確保數(shù)據(jù)記錄的唯一性,確定特定數(shù)據(jù)記錄在數(shù)據(jù)庫中的位置。
    實例:

    CREATE TABLE `employee`(、`EmployeeID` INT(11) AUTO_INCREMENT PRIMARY KEY,#或 PRIMARY KEY(`GradeID`)

    唯一索引(UNIQUE)

    避免同一個表中某數(shù)據(jù)列中的值重復。
    與主鍵索引的區(qū)別:主鍵索引只能有一個,唯一索引可有多個。
    實例:

    CREATE TABLE `dept`(、`DeptID` INT(11) AUTO_INCREMENT PRIMARY KEY,`DeptName` VARCHAR(32) NOT NULL UNIQUE#或 UNIQUE KEY ` GradeID`(`GradeID`)

    常規(guī)索引(INDEX)

    快速定位特定數(shù)據(jù)
    index 和 key 關鍵字都可以設置常規(guī)索引,應加在查詢條件的字段,不易添加太多常規(guī)索引,影響數(shù)據(jù)的插入,刪除和修改操作。

    實例:

    創(chuàng)建表時添加

    CREATE TABLE `result`{//...INDEX / KEY `ind` (`studentNo`,`subjectNo`) }

    創(chuàng)建后追加

    ALTER TABLE `result` ADD INDEX `ind` (`studentNo`,`subjectNo`);

    全文索引(FULLTEXT)

    快速定位特定數(shù)據(jù)
    只能用于MyISAM類型的數(shù)據(jù)表;只能用于CHAR ,VARCHAR,TEXT數(shù)據(jù)列類型;使用大型數(shù)據(jù)集。

    CREATE TABLE `student`(#...FULLTEXT(`StudentName`) )ENDINE=MYISAM; ALTER TABLE employee ADD FULLTEXT(`first_name`)

    總結

    以上是生活随笔為你收集整理的数据库索引的概念和分类的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。