版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
單表訪問方單表訪問方標(biāo)簽:MySQL對(duì)于我們這些MySQL的使?者來說,MySQL其實(shí)就是?個(gè)軟件,平為id列建?的聚簇索引為key1列建?的idx_key1?級(jí)索引為key3列建?的idx_key3?級(jí)索引為key_part1、key_part2、key_part3列建?idx_key_part?級(jí)索引,這也是?個(gè)聯(lián)合索引CREATETABLEsingle_tableidINTNOTNULLAUTO_INCREMENT,key1VARCHAR(100),key2key3key_part1VARCHAR(100),key_part2VARCHAR(100),key_part3VARCHAR(100),PRIMARYKEY(id),KEYidx_key1UNIQUEKEYidx_key2(key2),KEYidx_key3(key3),KEYidx_key_part(key_part1,key_part2,)Engine=InnoDB然后我們需要為這個(gè)表插?10000?記錄,除id然后我們需要為這個(gè)表插?10000?記錄,除id訪問方法method)如果我們搜?安鐘樓到?雁塔之間的路線的話,地圖軟件會(huì)給出n于單個(gè)表的查詢來說,設(shè)計(jì)MySQL的?叔把查詢的執(zhí)??式?致分SELECT*FROMsingle_tableWHEREid=SELECT*FROMsingle_tableWHEREkey2=SELECT*FROMsingle_tableWHEREkey1=SELECT*FROMsingle_tableWHEREkey2IS?級(jí)索引列值為NULL的情包含NULL值的數(shù)量并不限制,所以我們采?keyISNULL這是const的訪問?法SELECT*FROMsingle_demoWHEREkey1='abc'ORkey1ISNULL;SELECT*FROMsingle_tableWHEREkey_part1='godlike'ANDkey_part2>'legendary';SELECT*FROMsingle_tableWHEREkey_part1='godlike';SELECT*FROMsingle_tableWHEREkey_part1='godlike'ANDkey_part2='legendary';SELECT*FROMsingle_tableWHEREkey_part1='godlike'ANDkey_part2='legendary'ANDkey_part3='pentakill';找出找出key1ISNULL和key1='abc'的兩個(gè)連續(xù)的記錄范圍,然SELECT*FROMsingle_tableWHEREkey2IN(1438,6328)OR(key2>=38ANDkey2<=79);??級(jí)索引+回表的?式執(zhí)?,如果采??級(jí)索引+回表的?式??級(jí)索引+回表的?式執(zhí)?,如果采??級(jí)索引+回表的?式key2的值是key2的值是key2的值在38和79之間范圍1:key2=范圍2:key2=此處所說的使?索引進(jìn)?范圍匹配中的`索引`可以是聚簇索引,范圍3:key2∈[3879]范圍3:key2∈[3879]它的查詢列表只有3個(gè)列:key_part1,key_part2,idx_key_partkey_part2='abc'key_part1,key_part2,key_part3列的值直計(jì)MySQL為:indexSELECTkey_part1,key_part2,key_part3FROMsingle_tableWHEREkey_part2='abc';注注意事重溫二級(jí)索引回key1=key2>SELECT*FROMsingle_tableWHEREkey1='abc'ANDkey2>1000;記錄,再根據(jù)條件key2>1000到完整的?戶記錄繼續(xù)過會(huì)?到與key1列有關(guān)的搜索條件,其余條件,?如key21000這IN、ISNULL、ISNOTcond1ANDcond2:只有當(dāng)cond1和cond2都為TRUE時(shí)整cond1ORcond2:只要cond1或者cond2中有?個(gè)為整個(gè)表達(dá)式就為TRUESELECT*FROMsingle_tableWHEREkey2IN(1438,SELECT*FROMsingle_tableWHEREkey2=1438ORkey2=6328;key2100和key2200交集當(dāng)然就是key2200了,也就是說上邊這個(gè)查詢使?idx_key2的范圍區(qū)間就是(200,+∞)。這東OR意味著需要取各個(gè)范圍區(qū)間的并集,所以上邊這個(gè)查詢?cè)谖覀僑ELECT*FROMsingle_tableWHEREkey2>100ORkey2>200;SELECT*FROMsingle_tableWHEREkey2>100ANDkey2>200;也就是說上邊這個(gè)查也就是說上邊這個(gè)查詢使?idx_key2的范圍區(qū)間就是+∞)請(qǐng)注意,這個(gè)查詢語句中能利?的索引只有idx_key2?個(gè)到common_field'abc'這個(gè)條件,這個(gè)條件是在回表獲取了完的概念,所以在確定范圍區(qū)間的時(shí)候不需要考慮common_field=之所以把?不到索引的搜索條件替換為TRUE,是因?yàn)槲覀儾淮蛩鉙ELECT*FROMsingle_tableWHEREkey2>100ANDcommon_field='abc';我們把上邊的查詢中?不到idx_key2的搜索條我們把上邊的查詢中?不到idx_key2的搜索條件替換后就是這樣也就是說最上邊那個(gè)查詢使?idx_key2的范圍區(qū)間就是+∞)再來看?下使?OR的情況同理,我們把使?不到idx_key2索引的搜索條件替換為的范圍區(qū)間就是(-∞,+∞),也就是需要將全部?級(jí)索引的記錄進(jìn)?SELECT*FROMsingle_tableWHERESELECT*FROMsingle_tableWHEREkey2>100ORSELECT*FROMsingle_tableWHEREkey2>100ORcommon_field='abc';SELECT*FROMsingle_tableWHEREkey2>SELECT*FROMsingle_tableWHEREkey2>100AND假設(shè)我們使?idx_key1執(zhí)?查外,key1LIKE'%suf'也使?不到索引,所以(key1>'xyz'ANDTRUE)(key1<'abc'ANDkey1>'lmn')OR(TRUEANDkey1>'zzz'AND(TRUEORSELECT*FROMsingle_table(key1>'xyz'ANDkey2=748)OR(key1<'abc'ANDkey1>'lmn')OR(key1LIKE'%suf'ANDkey1>'zzz'AND(key2<8000ORcommon_field='abc'))替換掉永遠(yuǎn)為TRUE或FALSE的條替換掉永遠(yuǎn)為TRUE或FALSE的條因?yàn)榉蟢ey1'abcANDkey1'lmn'永key1>'xyz'和key1>'zzz'之間使?OR操果化簡的到的區(qū)間就是:key1>xyz。也就是idx_key1索引執(zhí)?查詢的話,需要把滿?key1假設(shè)我們使?idx_key2執(zhí)?查(key1>'xyz')OR(key1>(key1>'xyz')(key1<'abc'ANDkey1>'lmn')OR(key1>'zzz')哎呀呀,key2<8000ORTRUE的結(jié)果肯定哎呀呀,key2<8000ORTRUE的結(jié)果肯定我們前邊說過MySQL在?般情況下執(zhí)??個(gè)查詢時(shí)最多只會(huì)?到單引來完成?次查詢的執(zhí)??法稱之為:indexmerge,具體的索引Intersection合Intersection翻譯過來的意思是交集。這?是說某個(gè)查詢可以key2=748OR(TRUEANDkey2=748)OR(TRUEANDTRUE)OR(TRUEANDTRUEAND(key2<8000'a''b'主鍵構(gòu)成的,所以我們可以SELECT*FROMsingle_tableWHEREkey1='a'ANDkey3='b';?下邊這兩個(gè)查詢就不能進(jìn)?Intersection索引合并SELECT*FROMsingle_tableWHEREkey1>'a'ANDkey_part1='a'ANDkey_part2='b'ANDkey_part3='c';SELECT*FROMsingle_tableWHEREkey1='a'ANDkey_part1='a';SELECT*FROMsingle_tableWHEREkey1='a'ANDkey_part1='a'ANDkey_part2='b'ANDkey_part3='c';??說下邊這個(gè)查??說下邊這個(gè)查詢可能?到主鍵和idx_key_part?Intersection索引合并的操作主鍵構(gòu)成的,?級(jí)索引列的值相同的記錄可能會(huì)有好多條,這些s對(duì)使?IntersectionIntersectiones?Intersection索引合并的?式從idx_key1和idx_key2這兩SELECT*FROMsingle_tableWHEREid>100ANDkey1='a';先取出這兩個(gè)結(jié)果集中較?的主鍵值做?較,因?yàn)?2,所先取出這兩個(gè)結(jié)果集中較?的主鍵值做?較,因?yàn)?2,所因?yàn)?2,所以把idx_key2的結(jié)果集的主鍵值2丟棄,取出因?yàn)?3,所以把3加?到最后的交集結(jié)果中,繼續(xù)兩個(gè)結(jié)另外,不僅是多個(gè)?級(jí)索引之間可以采?Intersection索引SELECT*FROMsingle_tableWHEREkey1='a'ANDid>100;以為這個(gè)查詢會(huì)分別按照id100這個(gè)條件從聚簇索引中獲取?些記錄,在通過key1以為這個(gè)查詢會(huì)分別按照id100這個(gè)條件從聚簇索引中獲取?些記錄,在通過key1'a'這個(gè)條件從idx_key1?級(jí)索引中獲取?以可以在從idx_key1中獲取到的主鍵值上直接運(yùn)?條件id>100通過Intersection索引合并后需要回表的記錄數(shù)??減Union合SELECT*FROMsingle_tableWHEREkey1='a'ORkey3='b'?下邊這兩個(gè)查詢就不能進(jìn)?Union索引合并情況三:使?Intersection索引合并的搜索條SELECT*FROMsingle_tableWHEREkey1>'a'OR(key_part1='a'ANDkey_part2='b'ANDkey_part3='c');SELECT*FROMsingle_tableWHEREkey1='a'ORkey_part1='a';SELECT*FROMsingle_tableWHEREkey1='a'OR(key_part1='a'ANDkey_part2='b'ANDkey_part3=先按照搜索條件key1='a'ANDkey3='b'從索再按照搜索條件key_part1先按照搜索條件key1='a'ANDkey3='b'從索再按照搜索條件key_part1'aAND'bANDkey_part3'c'從聯(lián)合索通過Intersection索引合并后需要回表的記錄數(shù)??減Sort-UnionSELECT*FROMsingle_tableWHEREkey1<'a'ORkey3>'z'SELECT*FROMsingle_tableWHEREkey_part1='a'ANDkey_part2='b'ANDkey_part3='c'OR(key1='a'ANDkey3='b');這是因?yàn)楦鶕?jù)key1'a'從這是因?yàn)楦鶕?jù)key1'a'從idx_key1索引中獲取的?級(jí)索引記錄的主鍵值不是排好序的,根據(jù)key3'z'從idx_key3索引中獲取的?級(jí)索引記錄的主鍵值也不是排好序的,但是key1<'a'和key3>'z'這兩個(gè)條件?特別讓我們動(dòng)?,所以我們可以這樣:先根據(jù)key1'a'條件從idx_ke
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 雙十二購房指南
- 體育用品行業(yè)保安工作總結(jié)
- 軍訓(xùn)心得體會(huì)15篇
- 教育的項(xiàng)目計(jì)劃書精彩3篇
- 建筑工程施工合同范文集合8篇
- 2023年-2024年崗位安全教育培訓(xùn)試題及參考答案【培優(yōu)】
- 文學(xué)作品意識(shí)形態(tài)解讀-洞察分析
- 宇宙常數(shù)與宇宙結(jié)構(gòu)形成-洞察分析
- 遺傳進(jìn)化機(jī)制探究-洞察分析
- 2024年工貿(mào)重點(diǎn)企業(yè)有限空間作業(yè)專家指導(dǎo)服務(wù)專題培訓(xùn)
- 2024年注冊(cè)安全工程師考試題庫及參考答案【完整版】
- 第十二章 全等三角形 作業(yè)設(shè)計(jì)-2023-2024學(xué)年人教版八年級(jí)數(shù)學(xué)上冊(cè)
- 建筑結(jié)構(gòu)荷載規(guī)范DBJ-T 15-101-2022
- 制藥專業(yè)畢業(yè)設(shè)計(jì)開題報(bào)告
- 普通心理學(xué)智慧樹知到期末考試答案2024年
- 青少年涉毒問題監(jiān)測(cè)制度
- 征兵眼科科普知識(shí)講座
- 人工智能在醫(yī)療健康領(lǐng)域的應(yīng)用探索報(bào)告
- 高二上學(xué)期數(shù)學(xué)期末測(cè)試卷01-【好題匯編】備戰(zhàn)2023-2024學(xué)年高二數(shù)學(xué)上學(xué)期期末真題分類匯編(人教A版2019選擇性必修第一、二冊(cè))(原卷版)
- 環(huán)評(píng)驗(yàn)收方案
評(píng)論
0/150
提交評(píng)論