日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
一分鐘了解索引技巧

花1分鐘時(shí)間,了解聚集索引,非聚集索引,聯(lián)合索引,索引覆蓋。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),梁河企業(yè)網(wǎng)站建設(shè),梁河品牌網(wǎng)站建設(shè),網(wǎng)站定制,梁河網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,梁河網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

舉例,業(yè)務(wù)場(chǎng)景,用戶表,表結(jié)構(gòu)為:

 
 
 
 
  1. t_user( 
  2. uid primary key, 
  3. login_name unique, 
  4. passwd, 
  5. login_time, 
  6. age, 
  7. … 
  8. ); 

聚集索引(clustered index):聚集索引決定數(shù)據(jù)在磁盤上的物理排序,一個(gè)表只能有一個(gè)聚集索引,一般用primary key來(lái)約束。

舉例:t_user場(chǎng)景中,uid上的索引。

非聚集索引(non-clustered index):它并不決定數(shù)據(jù)在磁盤上的物理排序,索引上只包含被建立索引的數(shù)據(jù),以及一個(gè)行定位符row-locator,這個(gè)行定位符,可以理解為一個(gè)聚集索引物理排序的指針,通過(guò)這個(gè)指針,可以找到行數(shù)據(jù)。

舉例,查找年輕MM的業(yè)務(wù)需求:

 
 
 
 
  1. select uid from t_user where age > 18 and age < 26 

age上建立的索引,就是非聚集索引。

聯(lián)合索引:多個(gè)字段上建立的索引,能夠加速?gòu)?fù)核查詢條件的檢索

舉例,登錄業(yè)務(wù)需求:

 
 
 
 
  1. select uid, login_time from t_user where  
  2. login_name=? and passwd=? 

可以建立(login_name, passwd)的聯(lián)合索引。

聯(lián)合索引能夠滿足最左側(cè)查詢需求,例如(a, b, c)三列的聯(lián)合索引,能夠加速a | (a, b) | (a, b, c) 三組查詢需求。

這也就是為何不建立(passwd, login_name)這樣聯(lián)合索引的原因,業(yè)務(wù)上幾乎沒(méi)有passwd的單條件查詢需求,而有很多l(xiāng)ogin_name的單條件查詢需求。

提問(wèn):

 
 
 
 
  1. select uid, login_time from t_user where 
  2. passwd=? and login_name=? 

能否***(login_name, passwd)這個(gè)聯(lián)合索引?

回答:可以,最左側(cè)查詢需求,并不是指SQL語(yǔ)句的寫法必須滿足索引的順序(這是很多朋友的誤解)

索引覆蓋:被查詢的列,數(shù)據(jù)能從索引中取得,而不用通過(guò)行定位符row-locator再到row上獲取,即“被查詢列要被所建的索引覆蓋”,這能夠加速查詢速度。

舉例,登錄業(yè)務(wù)需求:

 
 
 
 
  1. select uid, login_time from t_user where 
  2. login_name=? and passwd=? 

可以建立(login_name, passwd, login_time)的聯(lián)合索引,由于login_time已經(jīng)建立在索引中了,被查詢的uid和login_time就不用去row上獲取數(shù)據(jù)了,從而加速查詢。

末了多說(shuō)一句,登錄這個(gè)業(yè)務(wù)場(chǎng)景,login_name具備***性,建這個(gè)單列索引就好。

作業(yè):

假設(shè)訂單有三種狀態(tài):0已下單,1已支付,2已完成

業(yè)務(wù)需求,查詢未完成的訂單,哪個(gè)SQL更快呢?

 
 
 
 
  1. select * from order where status!=2 
  2. select * from order where status=0 or status=1 
  3. select * from order where status IN (0,1) 
  4. select * from order where status=0 
  5. union 
  6. select * from order where stauts=1 

【本文為專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】


文章題目:一分鐘了解索引技巧
當(dāng)前路徑:http://m.5511xx.com/article/dhjpjgp.html