2017-07-28 分類: 網(wǎng)站建設(shè)
我們使用oracle數(shù)據(jù)庫網(wǎng)站制作的過程當(dāng)中,我們會發(fā)現(xiàn)注重sql優(yōu)化的人,同樣一個(gè)系統(tǒng),性能快了很多。下面介紹一些常用的sql優(yōu)化機(jī)巧和注重點(diǎn)。
1、表盡量使用別名,字段盡量使用別名.字段名,這樣子,可以減少oracle數(shù)據(jù)庫解析字段名。而且把不需要的字段名剔除掉,只保留有用的字段名,不要一直使用 select *。
2、關(guān)聯(lián)查詢時(shí),選擇好主表。oracle解析器對from 后面的表的解析是從右到左的,所以把數(shù)據(jù)量較小的表作為主表,然后和其他表進(jìn)行關(guān)聯(lián),假如存在三個(gè)以下表,把同時(shí)交叉關(guān)聯(lián)的表作為主表,提高查詢效率。
3、where 條件后面的的條件解析是從下向上,從后先前解析執(zhí)行的,所以可以把過濾數(shù)據(jù)量較多的條件放在最后面。
4、多利用表中數(shù)據(jù)行的rowid,rowid代表著表中數(shù)據(jù)存在的物理地址。例如刪除重復(fù)記錄的時(shí)候,可以根據(jù)rowid進(jìn)行刪除。
5、減少對表的查詢,特別在子查詢中,能盡量少重復(fù)訪問表,就減少。
6、避免使用耗資源的操作,如distinct、Union、minus等這種需要全表查詢的操作。
7、優(yōu)化分組group by ,對group by字段要進(jìn)行添加鎖引,如果分組當(dāng)中含有查詢條件,要改寫為where條件進(jìn)行過濾后,再進(jìn)行分組,而不是直接進(jìn)行 having 條件。
8、用EXISTS替代IN、用NOT EXISTS替代 NOT IN,因?yàn)?not in是低效的,它必須對該字段的全部數(shù)據(jù)進(jìn)行排序。
9、要合理利用索引字段提高查詢效率。特別是常用的關(guān)聯(lián)字段可以增加索引,主鍵、或者某些唯一字段。
10、利用>=替代>,因?yàn)?gt;=可以直接定位到=的位置,而大于必須先定位位置,然后再查詢下一個(gè)數(shù)據(jù)。耗時(shí)不一樣。
11、最后一個(gè)一定要學(xué)會查看執(zhí)行計(jì)劃,查看相關(guān)查詢條件是否進(jìn)入索引,找出速。
新聞標(biāo)題:oracle語句常見優(yōu)化方法
新聞來源:http://jinyejixie.com/news36/75786.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、App開發(fā)、網(wǎng)站維護(hù)、微信公眾號、網(wǎng)站制作、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容