最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

花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é)習或者工作具有一定的參考學(xué)習價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • 超大數(shù)據(jù)量存儲常用數(shù)據(jù)庫分表分庫算法總結(jié)

    超大數(shù)據(jù)量存儲常用數(shù)據(jù)庫分表分庫算法總結(jié)

    這篇文章主要介紹了超大數(shù)據(jù)量存儲常用數(shù)據(jù)庫分表分庫算法總結(jié),本文講解了按自然時間來分表/分庫、按數(shù)字類型hash分表/分庫、按md5值來分表/分庫三種方法,以及分表所帶來的問題探討,需要的朋友可以參考下
    2015-07-07
  • 幾種常用DB驅(qū)動和DB連接串小結(jié)

    幾種常用DB驅(qū)動和DB連接串小結(jié)

    幾種常用DB驅(qū)動和DB連接串,方便大家用各種程序,連接數(shù)據(jù)庫。
    2009-12-12
  • SQL 按特定字段值排序

    SQL 按特定字段值排序

    SQL 按特定字段值排序的代碼,有需要的朋友可以參考下。
    2009-08-08
  • 時序數(shù)據(jù)庫VictoriaMetrics源碼解析之寫入與索引

    時序數(shù)據(jù)庫VictoriaMetrics源碼解析之寫入與索引

    這篇文章主要為大家介紹了VictoriaMetrics時序數(shù)據(jù)庫的寫入與索引源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • sql連接查詢語句中on、where篩選的區(qū)別總結(jié)

    sql連接查詢語句中on、where篩選的區(qū)別總結(jié)

    接觸Sql語句時間挺長時間了,聽他人說過sql語句的連接查詢,但一直沒有認真研究和使用過!下面這篇文章主要給大家介紹了關(guān)于sql連接查詢語句中on、where篩選兩者之間區(qū)別的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友們下面來一起看看吧。
    2017-07-07
  • MSSQL自動同步設(shè)置方法

    MSSQL自動同步設(shè)置方法

    因有幾臺服務(wù)器,做下同步方便數(shù)據(jù)傳輸與備份
    2008-09-09
  • 關(guān)于SQL注入中文件讀寫的方法總結(jié)

    關(guān)于SQL注入中文件讀寫的方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于SQL注入中文件的讀寫方法,文中通過示例代碼介紹的非常詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • 免費開源數(shù)據(jù)庫:SQLite、MySQL和PostgreSQL的優(yōu)缺點

    免費開源數(shù)據(jù)庫:SQLite、MySQL和PostgreSQL的優(yōu)缺點

    對于處理大規(guī)模數(shù)據(jù)和高并發(fā)訪問的場景,MySQL和PostgreSQL更適合,SQLite在小型應(yīng)用程序或嵌入式設(shè)備中是一種輕量級、簡單和易于使用的選擇,根據(jù)具體的應(yīng)用需求和場景特點,選擇合適的開源關(guān)系型數(shù)據(jù)庫可以提供更好的性能、可擴展性和靈活性
    2024-02-02
  • Hive如何寫exist/in子句示例詳解

    Hive如何寫exist/in子句示例詳解

    這篇文章主要介紹了在Hive中使用EXISTS和IN子句進行數(shù)據(jù)查詢的方法,EXISTS子句用于檢查子查詢是否至少返回一行記錄,而IN子句用于檢查某個值是否存在于指定的列表中,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • 一個提升PostgreSQL性能的小技巧

    一個提升PostgreSQL性能的小技巧

    這篇文章主要介紹了一個提升Postgres性能的小技巧,通過修改很少的代碼來優(yōu)化查詢,需要的朋友可以參考下
    2015-04-04

最新評論

太仓市| 昔阳县| 汕尾市| 阜新| 焦作市| 兖州市| 东兰县| 普洱| 资源县| 枞阳县| 巴彦淖尔市| 库尔勒市| 边坝县| 灌云县| 承德市| 弋阳县| 沙雅县| 济阳县| 集贤县| 海城市| 牙克石市| 中江县| 文昌市| 平邑县| 马山县| 遂昌县| 江城| 洛扎县| 恭城| 西乌| 永福县| 邛崃市| 桐城市| 来凤县| 朝阳区| 登封市| 新巴尔虎左旗| 台中市| 阳信县| 新宾| 永城市|