• <ul id="mayc0"></ul>
    <ul id="mayc0"><center id="mayc0"></center></ul>
    <strike id="mayc0"><input id="mayc0"></input></strike>
    <ul id="mayc0"></ul>
  • 始創(chuàng)于2000年 股票代碼:831685
    咨詢熱線:0371-60135900 注冊(cè)有禮 登錄
    • 掛牌上市企業(yè)
    • 60秒人工響應(yīng)
    • 99.99%連通率
    • 7*24h人工
    • 故障100倍補(bǔ)償
    全部產(chǎn)品
    您的位置: 網(wǎng)站首頁 > 幫助中心>文章內(nèi)容

    索引該如何設(shè)計(jì)才高效?

    發(fā)布時(shí)間:  2012/6/24 17:21:49
    索引該如何設(shè)計(jì)才高效?

      如果我們僅僅只是這樣告訴對(duì)方的:“幫我確認(rèn)一本數(shù)據(jù)庫類別的講述 MySQL 的叫做《MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計(jì)》的書是否在藏”,結(jié)果又會(huì)如何呢?朋友只能一個(gè)大類區(qū)域一個(gè)大類區(qū)域的去尋找“數(shù)據(jù)庫”類別,然后再找到 “MySQL”范疇,再看到我們所需是否在藏。由于我們少說了一個(gè)“計(jì)算機(jī)類”,朋友就必須到每一個(gè)大類去尋找。

      所以,我們應(yīng)該盡量讓查找條件盡可能多的在索引中,盡可能通過索引完成所有過濾,回表只是取出額外的數(shù)據(jù)字段。

      如果我們是這樣說的:“幫我確認(rèn)一本講述 MySQL 的數(shù)據(jù)庫范疇的計(jì)算機(jī)叢書,叫做《MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計(jì)》,看是否在藏”。如果這位朋友并不知道計(jì)算機(jī)是一個(gè)大類,也不知道數(shù)據(jù)庫屬于計(jì)算機(jī)大類,那這位朋友就悲劇了。首先他得遍歷每個(gè)類別確認(rèn)“MySQL”存在于哪些類別中,然后從包含 “MySQL” 書籍中再看有哪些是“數(shù)據(jù)庫”范疇的(有可能部分是講述PHP或者其他開發(fā)語言的),然后再排除非計(jì)算機(jī)類的(雖然可能并沒有必要),然后才能確認(rèn)。

      所以,字段的順序?qū)M合索引效率有至關(guān)重要的作用,過濾效果越好的字段需要更靠前。

      如果我們還有這樣一個(gè)需求(雖然基本不可能):“幫我將圖書館中所有的計(jì)算機(jī)圖書借來”。朋友如果通過索引來找,每次都到索引柜找到計(jì)算機(jī)書籍所在的區(qū)域,然后從書架上搬下一格(假設(shè)只能以一格為單位從書架上取下,類比數(shù)據(jù)庫中以block/page為單位讀取),取出第一本,然后再從索引柜找到計(jì)算機(jī)圖書所在區(qū)域,再搬下一格,取出一本… 如此往復(fù)直至取完所有的書。如果他不通過索引來找又會(huì)怎樣呢?他需要從地一個(gè)書架一直往后找,當(dāng)找到計(jì)算機(jī)的書,搬下一格,取出所有計(jì)算機(jī)的書,再往后,直至所有書架全部看一遍。在這個(gè)過程中,如果計(jì)算機(jī)類書籍較多,通過索引來取所花費(fèi)的時(shí)間很可能要大于直接遍歷,因?yàn)椴粩嗤鶑?fù)的索引翻閱所消耗的時(shí)間會(huì)非常長。(延伸閱讀:這里有一篇以前寫的關(guān)于Oracle的文章,索引掃描還是全表掃描(Index Scan Or Full Table Scan))

      所以,當(dāng)我們需要讀取的數(shù)據(jù)量占整個(gè)數(shù)據(jù)量的比例較大抑或者說索引的過濾效果并不是太好的時(shí)候,使用索引并不一定優(yōu)于全表掃描。

      如果我們的朋友不知道“數(shù)據(jù)庫”這個(gè)類別可以屬于“計(jì)算機(jī)”這個(gè)大類,抑或者圖書館的索引系統(tǒng)中這兩個(gè)類別屬性并沒有關(guān)聯(lián)關(guān)系,又會(huì)怎樣呢?也就是說,朋友得到的是2個(gè)獨(dú)立的索引,一個(gè)是告知“計(jì)算機(jī)”這個(gè)大類所在的區(qū)域,一個(gè)是“數(shù)據(jù)庫”這個(gè)小類所在的區(qū)域(很可能是多個(gè)區(qū)域),那么他只能二者選其一來搜索我的需求。即使朋友可以分別通過2個(gè)索引檢索然后自己在腦中取交集再找,那這樣的效率實(shí)際過程中也會(huì)比較低下。

      所以,在實(shí)際使用過程中,一次數(shù)據(jù)訪問一般只能利用到1個(gè)索引,這一點(diǎn)在索引創(chuàng)建過程中一定要注意,不是說一條SQL語句中Where子句里面每個(gè)條件都有索引能對(duì)應(yīng)上就可以了


    本文出自:億恩科技【www.vbseamall.com】

    服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
  • 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
  • 專注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號(hào)
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
      0
     
     
     
     

    0371-60135900
    7*24小時(shí)客服服務(wù)熱線