這篇主要寫寫數(shù)據(jù)庫索引的問題。

因?yàn)轫?xiàng)目中涉及到大量的數(shù)據(jù)庫搜索操作,搜索的語句都較為復(fù)雜,涉及多個(gè)條件,所以在實(shí)際測(cè)試的過程中,能夠發(fā)現(xiàn)每次搜索的時(shí)間都比較長,而且CPU占用十分高。
所以,我就在想如何降低搜索時(shí)間,保證整個(gè)過程耗費(fèi)資源較小。當(dāng)時(shí)受到高人指點(diǎn),可以使用數(shù)據(jù)庫索引,我當(dāng)時(shí)就試了一下,發(fā)現(xiàn)確實(shí)快了很多。
因?yàn)椴惶靼姿饕木唧w原理,所以后面我就花了些時(shí)間單獨(dú)研究了一下如何建立索引。
數(shù)據(jù)庫索引建立首先,要明確一個(gè)問題,建立索引是為了什么目的?當(dāng)然是為了提高sql語句的搜索速度。
那么想要提高速度的sql語句的組成是什么樣子的?這個(gè)組成主要看where之后的部分,就是搜索的條件,即條件涉及到哪些列。
明確了具體的列后,需要對(duì)每列的屬性進(jìn)行了解,即該列包含的不同的值的數(shù)量。在行數(shù)固定的情況下,這個(gè)數(shù)量越大,則每個(gè)值對(duì)應(yīng)的行數(shù)就越小,那么就會(huì)方便進(jìn)行搜索。
這里補(bǔ)充數(shù)據(jù)庫索引建立的一些原理:
create index myindex on mytable (a,b,c)如建立(a,b,c)三列的索引,這里的順序不是隨機(jī)的,就是從左到右的順序。但是,在where后的列的順序關(guān)系并不會(huì)影響使用這個(gè)索引,因?yàn)閿?shù)據(jù)庫底層會(huì)對(duì)其進(jìn)行優(yōu)化。
在數(shù)據(jù)庫中,我們請(qǐng)求建立這樣的索引,數(shù)據(jù)庫會(huì)優(yōu)先以最左邊的列開始建立,建立的索引組會(huì)是:{(a), (a,b), (a,b,c)}。所以,都會(huì)以a列作為第一個(gè)搜索的列。
回到之前說到的每列包含不同值的數(shù)量,如果我們where后就是a,b,c三列,那么可以把包含不同值數(shù)量大的列放到最左邊,然后遞減排序。當(dāng)然,這是在每列都只匹配一個(gè)值的條件下,即"=“匹配,相對(duì)而言,”="匹配會(huì)比其它方式的篩選更快,建議優(yōu)先選擇。
為什么這樣做?因?yàn)樵谒饕ぷ鬟^程中,第一列會(huì)優(yōu)先篩選,在其它條件相同時(shí),該列篩選后的總列數(shù)就會(huì)更少,那么在這個(gè)基礎(chǔ)上,繼續(xù)做后面的篩選工作,可以加快整體的搜索速度。
通過這樣的建立方式,可以大大提高搜索的效率,加快搜索過程。
總結(jié)本文主要介紹了如何根據(jù)sql語句對(duì)數(shù)據(jù)庫建立索引提高搜索速度,希望能夠幫到有需要的朋友。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁名稱:數(shù)據(jù)庫索引建立原理中的小細(xì)節(jié)-創(chuàng)新互聯(lián)
本文URL:http://www.chinadenli.net/article46/dgeceg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、品牌網(wǎng)站制作、建站公司、外貿(mào)網(wǎng)站建設(shè)、虛擬主機(jī)、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容