MySQL數(shù)據(jù)庫(kù)應(yīng)用實(shí)戰(zhàn)教程(慕課版)(第2版)實(shí)訓(xùn)指導(dǎo)-7-4 索引使用策略_第1頁(yè)
MySQL數(shù)據(jù)庫(kù)應(yīng)用實(shí)戰(zhàn)教程(慕課版)(第2版)實(shí)訓(xùn)指導(dǎo)-7-4 索引使用策略_第2頁(yè)
MySQL數(shù)據(jù)庫(kù)應(yīng)用實(shí)戰(zhàn)教程(慕課版)(第2版)實(shí)訓(xùn)指導(dǎo)-7-4 索引使用策略_第3頁(yè)
MySQL數(shù)據(jù)庫(kù)應(yīng)用實(shí)戰(zhàn)教程(慕課版)(第2版)實(shí)訓(xùn)指導(dǎo)-7-4 索引使用策略_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

實(shí)訓(xùn)案例名稱:索引使用策略一、任務(wù)介紹索引的使用,可以分為匹配全值索引查詢、匹配最左前綴索引查詢、匹配列前綴索引查詢、匹配值的范圍索引查詢、僅對(duì)索引進(jìn)行查詢(索引覆蓋)。二、實(shí)現(xiàn)步驟(1)匹配全值索引查詢:針對(duì)建索引的列可以匹配列的全值進(jìn)行查詢。mysql>EXPLAINSELECT*FROMstudentWHEREid=3\G***************************1.row***************************id:1select_type:SIMPLEtable:studentpartitions:NULLtype:constpossible_keys:PRIMARY,uk_idkey:PRIMARYkey_len:4ref:constrows:1filtered:100.00Extra:NULL1rowinset,1warning(0.00sec)mysql>(2)匹配最左前綴索引查詢:索引不僅可以進(jìn)行單列索引,也可以建立聯(lián)合索引,也就是把多列建成一個(gè)聯(lián)合索引。#使用姓名(name)、性別(sex)、年齡(age)字段創(chuàng)建聯(lián)合索引mysql>ALTERTABLEstudentADDINDEXidx_name_sex_age(name,sex,age);QueryOK,0rowsaffected(0.35sec)Records:0Duplicates:0Warnings:0#刪除姓名字段的索引mysql>DROPINDEXidx_nameONstudent;QueryOK,0rowsaffected(0.20sec)Records:0Duplicates:0Warnings:0#按姓名字段的索引查找,匹配最左前綴列mysql>EXPLAINSELECT*FROMstudentWHEREname='小明'\G***************************1.row***************************id:1select_type:SIMPLEtable:studentpartitions:NULLtype:refpossible_keys:idx_name_sex_agekey:idx_name_sex_agekey_len:1023ref:constrows:1filtered:100.00Extra:NULL1rowinset,1warning(0.00sec)#當(dāng)可選的索引有多個(gè)時(shí),如idx_sex、idx_name_sex_age,存儲(chǔ)引擎會(huì)選擇最優(yōu)的索引mysql>EXPLAINSELECT*FROMstudentWHEREname='小明'ANDsex='男'\G***************************1.row***************************id:1select_type:SIMPLEtable:studentpartitions:NULLtype:refpossible_keys:idx_sex,idx_name_sex_agekey:idx_name_sex_agekey_len:1046ref:const,constrows:1filtered:100.00Extra:NULL1rowinset,1warning(0.00sec)#當(dāng)可選的索引有多個(gè)時(shí),如idx_age、idx_name_sex_age,存儲(chǔ)引擎會(huì)選擇最優(yōu)的索引mysql>EXPLAINSELECT*FROMstudentWHEREname='小明'ANDage='30'\G***************************1.row***************************id:1select_type:SIMPLEtable:studentpartitions:NULLtype:refpossible_keys:idx_age,idx_name_sex_agekey:idx_agekey_len:23ref:constrows:1filtered:16.67Extra:Usingwhere1rowinset,1warning(0.00sec)#當(dāng)可選的索引有多個(gè)時(shí),存儲(chǔ)引擎會(huì)選擇最優(yōu)的索引mysql>EXPLAINSELECT*FROMstudentWHEREname='小明'ANDsex='男'ANDage='30'\G***************************1.row***************************id:1select_type:SIMPLEtable:studentpartitions:NULLtype:refpossible_keys:idx_sex,idx_age,idx_name_sex_agekey:idx_agekey_len:23ref:constrows:1filtered:16.67Extra:Usingwhere1rowinset,1warning(0.00sec)#使用性別字段的索引mysql>EXPLAINSELECTsexFROMstudentWHEREsex='男'\G***************************1.row***************************id:1select_type:SIMPLEtable:studentpartitions:NULLtype:refpossible_keys:idx_sex,idx_name_sex_agekey:idx_sexkey_len:23ref:constrows:3filtered:100.00Extra:Usingindex1rowinset,1warning(0.00sec)#按照最左前綴匹配原則,聯(lián)合索引不能匹配性別、年齡這兩個(gè)字段mysql>EXPLAINSELECT*FROMstudentWHEREsex='男'ANDage='30'\G***************************1.row***************************id:1select_type:SIMPLEtable:studentpartitions:NULLtype:refpossible_keys:idx_sex,idx_agekey:idx_agekey_len:23ref:constrows:1filtered:50.00Extra:Usingwhere(3)匹配列前綴索引查詢:匹配列的前一部分進(jìn)行查詢,如查詢姓名,可以按姓氏“劉”開頭進(jìn)行查詢,使用通配符%,但是通配符只能放置在右側(cè),不能放置在左側(cè)。#通配符放置在右側(cè)mysql>EXPLAINSELECT*FROMstudentWHEREnamelike'劉%'\G***************************1.row***************************id:1select_type:SIMPLEtable:studentpartitions:NULLtype:rangepossible_keys:idx_name_sex_agekey:idx_name_sex_agekey_len:1023ref:NULLrows:1filtered:100.00Extra:Usingindexcondition1rowinset,1warning(0.01sec)#通配符放置在左側(cè)時(shí),不能使用索引mysql>EXPLAINSELECT*FROMstudentWHEREnamelike'%劉%'\G***************************1.row***************************id:1select_type:SIMPLEtable:studentpartitions:NULLtype:ALLpossible_keys:NULLkey:NULLkey_len:NULLref:NULLrows:6filtered:16.67Extra:Usingwhere1rowinset,1warning(0.00sec)mysql>(4)匹配值的范圍索引查詢:對(duì)索引可以進(jìn)行范圍查詢。mysql>EXPLAINSELECT*FROMstudentWHEREid>2ANDid<5\G***************************1.row***************************id:1select_type:SIMPLEtable:studentpartitions:NULLtype:rangepossible_keys:PRIMARY,uk_idkey:PRIMARYkey_len:4ref:NULLrows:2filtered:100.00Extra:Usingwhere1rowinset,1warning(0.00sec)(5)僅對(duì)索引進(jìn)行查詢:只針對(duì)索引進(jìn)行查詢,也叫索引覆蓋,不查詢數(shù)據(jù)表。#使用年齡字段創(chuàng)建索引idx_age,查詢年齡的時(shí)候從索引上直接獲取,不需要到數(shù)據(jù)表中獲取mysql>EXPLAINSELECTageFROMuserWHEREage>20\G***************************1.row***************************i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論