第七周總結

2021-09-11 01:30:07 字數 3661 閱讀 1885

3.1 索引特點

很容易想到 mysql 索引可以大大提高檢索速度

優點:1.通過建立唯一索引,保證資料表每行資料的唯一性

2.大大加快資料查詢速度

3.在使用分組和排序進行資料查詢時,可以顯著減少查詢中分組和排序的時間

缺點:1.維護索引需要耗費資料庫資源

2.索引需要占用磁碟空間,索引檔案可能比資料庫檔案更快達到最大檔案尺寸

3.當對資料表進行增刪改時,因為要維護索引,所以速度會受到影響

3.2 分類

索引是在儲存引擎中實現的,即不同的儲存引擎會使用不同的索引

儲存引擎 myisam 和 innodb 只支援 btree 索引,不能更換

儲存引擎 memory/heap 支援 btree 和 hash 索引

2.1 全文索引(fulltext)

只有在 myisam 引擎上才能使用,只能在 char、varchar、text 型別欄位上使用全文索引

就是在一堆文字中,通過其中的關鍵字找到該欄位所屬的記錄行

舉個栗子:「我去年買了個表,還買了個包」,通過「表」就可能可以找到該條記錄,這裡說的是可能,是因為全文索引的使用涉及了很多細節,但大致是這個意思

2.2 單列索引

① 普通索引(normal):基本索引型別,沒有什麼限制,允許定義索引的列中插入重複值和空值,純粹是為了查詢速度快一點

② 唯一索引(unique):索引列中的值是唯一的,允許空值

③ 主鍵索引:一種特殊的索引,不允許有空值

2.3 組合索引

在表中的多個欄位上建立的索引,只有在查詢條件中使用了建立索引時的第乙個字段,索引才會被使用,使用符合索引時遵循最左字首集合

2.4 空間索引

空間索引是對空間資料型別的字段建立的索引,mysql 中的空間資料型別有四種:geometry、point、linestring、polygon

建立空間索引時,使用 spatial 關鍵字,建立空間索引的列必須宣告為 not null,且引擎必須為 myisam

3.3 索引操作

格式:

create

table table_name[col_name data type]

// 建立表語句

[unique|fulltext|spatial]

// 建立什麼樣的索引

[index|key]

// 索引關鍵字

[index_name]

// 索引名字

(col_name[length]

)// 對哪個字段設定索引

[asc|desc]

// 對索引進行排序

unique:可選,表示索引為唯一性索引

fulltext;可選,表示索引為全文索引

spatial:可選,表示索引為空間索引

index 和 key:用於指定欄位為索引,兩者選擇其中之一就可以了,作用是一樣的

index_name:可選,給建立的索引取乙個新名稱。

col_name:指定索引對應的字段的名稱,該欄位必須是前面定義好的字段

length:可選,指索引的長度,必須是字串型別才可以使用

asc:可選,表示公升序排列

desc:可選,表示降序排列

舉個栗子:

① 建立普通索引

create

table

book

( bookid int

notnull

, bookname varchar

(255

)not

null

,authors

varchar

(255

)not

null

, info varchar

(255

)null

,comment

varchar

(255

)null

, year_publication year

notnull

,index

(year_publication)

// 對欄位 year_publication 設定索引

)

檢視表結構:

show

create

table book

結果:

② 建立組合索引

create

table

person

( id int

notnull

, name varchar

(255

)not

null

, *** char(1

)not

null

,index

(name, ***)

// 對欄位 name、*** 建立索引

)

檢視表結構:

show

create

table person

結果:

如上圖所示,建立組合索引時,不設定索引名字,生成的索引預設以第乙個欄位來命名

檢視索引是否在使用

向 book 表中插入一條資料

insert

into

book

values(12

,'nihao'

,'nihao'

,'文學'

,'henhao'

,1990

)

使用 explain 語句檢視索引是否有在使用

explain

select

*from book where year_publication =

1990

結果:

explain 語句輸出結果的各個行的解釋如下:

select_type: 表示查詢中每個 select 子句的型別(簡單 or 複雜)

type:表示 mysql 在表中找到所需行的方式,又稱「訪問型別」,常見型別如下:(從上至下,效果依次變好)

possible_keys :指出 mysql 能使用哪個索引在表中找到行,查詢涉及到的字段上若存在索引,則該索引將被列出,但不一定被查詢使用

key: 顯示 mysql 在查詢中實際使用的索引,若沒有使用索引,顯示為null

key_len :表示索引中使用的位元組數,可通過該列計算查詢中使用的索引的長度

ref :表示上述表的連線匹配條件,即哪些列或常量被用於查詢索引列上的值

rows :表示 mysql 根據表統計資訊及索引選用情況,估算的找到所需的記錄所需要讀取的行數

extra :包含不適合在其他列中顯示但十分重要的額外資訊 如 using where,using index

③ 略…

第七周總結

在本週的學習之中,我愈發的感覺前端的內容之廣闊,知識量確實不少,但這些知識可以通過不同方式的應用實現各種各樣的功能,就拿線面的乙個花瓣來說。裡面的東西確實不複雜,但實現的效果卻是相當可觀的 body wrap hua07 huaban wrap hover hua01 wrap hover hua0...

第七周總結

2019第七周作業 本週作業頭 這個作業屬於那個課程 c語言程式設計ii 這個作業要求在 我在這個課程的目標是 理解指標陣列和位址之前的關係及應用 這個作業在那個具體方面幫助我實現目標 practice 參考文獻 教科書6 2 每個單詞的最後乙個字母改成大寫 10 分 函式fun的功能是 將p所指字...

第七周總結

這個作業屬於哪個課程 班級的鏈結 如2020 2021 1資訊保安專業導論 這個作業要求在 作業要求的鏈結 如2020 2021 1資訊保安專業導論第七周作業 這個作業的目標 寫上具體方面 作業正文 本部落格鏈結 第八章抽象資料型別與子程式1 資料結構 一種抽象資料型別中的復合資料域的實現。2 容器...