欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2019年12月18日 11:05:54   作者:58沈劍  
這篇文章主要給大家介紹了如何通過一分鐘快速了解索引技巧的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用索引具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

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

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

t_user(

uid primary key,

login_name unique,

passwd,

login_time,

age,

…

);

 

聚集索引(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è)聚集索引物理排序的指針,通過這個(gè)指針,可以找到行數(shù)據(jù)。

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

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

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

聯(lián)合索引:多個(gè)字段上建立的索引,能夠加速?gòu)?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)這個(gè)聯(lián)合索引?

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

索引覆蓋:被查詢的列,數(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ù)了,從而加速查詢。

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

作業(yè):

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

業(yè)務(wù)需求,查詢未完成的訂單,哪個(gè)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é)

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

相關(guān)文章

  • 數(shù)據(jù)分析數(shù)據(jù)庫(kù)ClickHouse在大數(shù)據(jù)領(lǐng)域應(yīng)用實(shí)踐

    數(shù)據(jù)分析數(shù)據(jù)庫(kù)ClickHouse在大數(shù)據(jù)領(lǐng)域應(yīng)用實(shí)踐

    這篇文章主要為大家介紹了數(shù)據(jù)分析數(shù)據(jù)庫(kù)ClickHouse在大數(shù)據(jù)領(lǐng)域應(yīng)用實(shí)踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • 為什么你不要收縮數(shù)據(jù)庫(kù)文件(國(guó)外翻譯)

    為什么你不要收縮數(shù)據(jù)庫(kù)文件(國(guó)外翻譯)

    這幾天查看了很多關(guān)于SQL SERVER收縮數(shù)據(jù)文件方面的文章,準(zhǔn)備寫一篇關(guān)于收縮日志方面的文章,但是突然有種沖動(dòng)將看過經(jīng)典的文章翻譯出來(lái),需要的朋友可以參考下
    2018-03-03
  • sql注入之必備的基礎(chǔ)知識(shí)

    sql注入之必備的基礎(chǔ)知識(shí)

    這篇文章所有的知識(shí)點(diǎn)都是在sql注入中最常用到也是最基礎(chǔ)的知識(shí)點(diǎn)。對(duì)于一個(gè)需要精通sql語(yǔ)句的web安全工程師來(lái)說(shuō),下面的知識(shí)是必須要掌握的。下面的知識(shí)也是學(xué)習(xí)sql注入最基本的知識(shí)。下面大家來(lái)一起看看吧。
    2016-09-09
  • MySQL mysqldump命令使用詳解

    MySQL mysqldump命令使用詳解

    MySQL有很多可以導(dǎo)入數(shù)據(jù)的方法,然而這些只是數(shù)據(jù)傳輸中的一半,另外的一般是從MySQL數(shù)據(jù)庫(kù)中導(dǎo)出數(shù)據(jù)。有許多的原因我們需要導(dǎo)出數(shù)據(jù)。一個(gè)重要的原因是用于備份數(shù)據(jù)庫(kù)。數(shù)據(jù)的造價(jià)常常是昂貴的,需要謹(jǐn)慎處理它們。
    2006-12-12
  • Apache?Hudi集成Spark?SQL操作hide表

    Apache?Hudi集成Spark?SQL操作hide表

    這篇文章主要為大家介紹了Apache?Hudi集成Spark?SQL操作hide表,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-03-03
  • Navicat圖形化界面之Navicat?Premium?12?安裝與使用教程

    Navicat圖形化界面之Navicat?Premium?12?安裝與使用教程

    Navicat?premium?是一款數(shù)據(jù)庫(kù)管理工具,它可以讓你以單一程式同時(shí)連線到?MySQL、SQLite、Oracle?及?PostgreSQL?資料庫(kù),讓管理不同類型的資料庫(kù)更加的方便,下面通過本文給大家介紹Navicat?Premium?12?安裝使用教程,需要的朋友參考下吧
    2021-12-12
  • 站內(nèi)群發(fā)消息三種不同用戶量的數(shù)據(jù)庫(kù)設(shè)計(jì)

    站內(nèi)群發(fā)消息三種不同用戶量的數(shù)據(jù)庫(kù)設(shè)計(jì)

    很多SNS網(wǎng)站和一部分CMS網(wǎng)站都廣泛地應(yīng)用了站內(nèi)信這一模塊,這個(gè)看似簡(jiǎn)單的東西其實(shí)背后隱藏著很多需要設(shè)計(jì)師重視的設(shè)計(jì)細(xì)節(jié),要做好這個(gè)“郵遞員”是很不容易的,本文講述站內(nèi)群發(fā)消息三種不同用戶量的數(shù)據(jù)庫(kù)設(shè)計(jì),逐漸設(shè)計(jì)一個(gè)百萬(wàn)級(jí)用戶量的站內(nèi)信群發(fā)數(shù)據(jù)庫(kù)
    2023-12-12
  • 在PostgreSQL的基礎(chǔ)上創(chuàng)建一個(gè)MongoDB的副本的教程

    在PostgreSQL的基礎(chǔ)上創(chuàng)建一個(gè)MongoDB的副本的教程

    這篇文章主要介紹了在PostgreSQL的基礎(chǔ)上創(chuàng)建一個(gè)MongoDB的副本的教程,使在使用NoSQL的同時(shí)又能用到PostgreSQL中的東西,需要的朋友可以參考下
    2015-04-04
  • 本機(jī)上實(shí)現(xiàn)neo4j遠(yuǎn)程連接方式

    本機(jī)上實(shí)現(xiàn)neo4j遠(yuǎn)程連接方式

    這篇文章主要介紹了本機(jī)上實(shí)現(xiàn)neo4j遠(yuǎn)程連接方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 數(shù)據(jù)庫(kù)的設(shè)計(jì)方法、規(guī)范與技巧

    數(shù)據(jù)庫(kù)的設(shè)計(jì)方法、規(guī)范與技巧

    數(shù)據(jù)庫(kù)的設(shè)計(jì)方法、規(guī)范與技巧...
    2007-03-03

最新評(píng)論