濮阳杆衣贸易有限公司

主頁 > 知識庫 > 通過一分鐘快速了解索引技巧

通過一分鐘快速了解索引技巧

熱門標(biāo)簽:湖南保險智能外呼系統(tǒng)產(chǎn)品介紹 南昌呼叫中心外呼系統(tǒng)哪家好 ai電話電話機器人 怎么申請400熱線電話 怎么去開發(fā)一個電銷機器人 簡單的智能語音電銷機器人 河北便宜電銷機器人軟件 泗洪正規(guī)電話機器人找哪家 小程序智能電話機器人

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

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

t_user(

uid primary key,

login_name unique,

passwd,

login_time,

age,

…

);

 

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

舉例:t_user場景中,uid上的索引。

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

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

select uid from t_user where age > 18 and age  26;

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

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

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

select uid, login_time from t_user where 

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ù)上幾乎沒有passwd的單條件查詢需求,而有很多l(xiāng)ogin_name的單條件查詢需求。

提問:

select uid, login_time from t_user where

passwd=? and login_name=?

能否命中(login_name, passwd)這個聯(lián)合索引?

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

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

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

select uid, login_time from t_user where

login_name=? and passwd=?

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

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

作業(yè):

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

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

select * from order where status!=2

select * from order where status=0 or status=1

select * from order where status IN (0,1)

select * from order where status=0

union

select * from order where stauts=1

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • MySQL索引類型總結(jié)和使用技巧以及注意事項
  • mysql索引使用技巧及注意事項
  • MySQL數(shù)據(jù)庫優(yōu)化技術(shù)之索引使用技巧總結(jié)
  • mysql索引使用率監(jiān)控技巧(值得收藏!)
  • SQL Server 數(shù)據(jù)庫索引其索引的小技巧
  • oracle 索引的相關(guān)介紹(創(chuàng)建、簡介、技巧、怎樣查看) .
  • 優(yōu)化 SQL Server 索引的小技巧

標(biāo)簽:瀘州 淮安 荊門 威海 景德鎮(zhèn) 江蘇 柳州 那曲

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《通過一分鐘快速了解索引技巧》,本文關(guān)鍵詞  通過,一分鐘,快速,了解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《通過一分鐘快速了解索引技巧》相關(guān)的同類信息!
  • 本頁收集關(guān)于通過一分鐘快速了解索引技巧的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    彭山县| 大冶市| 泾源县| 东明县| 定结县| 新昌县| 文登市| 庆元县| 安溪县| 土默特右旗| 延庆县| 呼和浩特市| 灵丘县| 靖西县| 兰溪市| 修文县| 德惠市| 贵定县| 托克托县| 玉溪市| 泰来县| 崇左市| 景宁| 肃北| 酒泉市| 永嘉县| 凤阳县| 安阳市| 阿坝县| 安庆市| 灵石县| 融水| 东安县| 会昌县| 库车县| 将乐县| 阜新| 招远市| 蒲城县| 安达市| 尉氏县|