數(shù)據(jù)庫(kù)的增刪改查的效率在開(kāi)發(fā)中是十分重要的,好的數(shù)據(jù)庫(kù)優(yōu)化方法可以讓你的數(shù)據(jù)庫(kù)效率更高,今天小編來(lái)總結(jié)一些優(yōu)化數(shù)據(jù)庫(kù)的方法。
一:表優(yōu)化一般情況下表的數(shù)據(jù)越小,查詢(xún)的速度也就越快:
1.垂直拆分表:把一個(gè)表中特別長(zhǎng)的字段拆分成多張表,然后在查詢(xún)時(shí)進(jìn)行關(guān)聯(lián)查詢(xún),這樣可以有效的提高查詢(xún)效率。
2.字段屬性設(shè)置:長(zhǎng)度類(lèi)型設(shè)置夠用就行,比如能設(shè)置成varchar(10)的就不要設(shè)置成varchar(100);對(duì)于某些只有固定幾個(gè)值可選的字段,例如“性別”等,可以將它們定義為tinyint或int類(lèi)型,因?yàn)樵贛ySQL中,數(shù)值型數(shù)據(jù)被處理起來(lái)的速度要比文本類(lèi)型快。
二:sql語(yǔ)句優(yōu)化方法
1.索引可以加快查詢(xún)速度但是有的操作卻能破壞索引,比如:!=,<>操作符等會(huì)使索引失效。
2.盡量不要在 where 子句中使用 or 來(lái)連接條件,這樣會(huì)破壞索引。
3.使用LIKE '%ABC'或LIKE '%ABC%'類(lèi)型的查詢(xún)也會(huì)破壞索引使索引失效,可以嘗試使用全文搜索。
4.應(yīng)盡量避免在 where 子句中對(duì)字段進(jìn)行表達(dá)式操作或進(jìn)行函數(shù)操作,這將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描
5.不要使用 select * from table ,用具體的字段列表代替“*”,不要返回用不到的任何字段。
6.避免頻繁創(chuàng)建和刪除臨時(shí)表,以減少系統(tǒng)表資源的消耗。
7.盡量避免向客戶(hù)端返回大數(shù)據(jù)量,若數(shù)據(jù)量過(guò)大,應(yīng)該考慮相應(yīng)需求是否合理。
8.盡量避免大事務(wù)操作,提高系統(tǒng)并發(fā)能力。
三:用UNION來(lái)代替臨時(shí)表union查詢(xún),它可以把需要使用臨時(shí)表的兩條或更多的select查詢(xún)合并的一個(gè)查詢(xún)中。客戶(hù)端的查詢(xún)結(jié)束時(shí),臨時(shí)表會(huì)被自動(dòng)刪除,從而保證數(shù)據(jù)庫(kù)整齊、。
四:事務(wù)雖然大部分的查詢(xún)都可以使用:子查詢(xún)(Sub-Queries)、連接(JOIN)和聯(lián)合(UNION)來(lái)創(chuàng)建各種各樣的查詢(xún),但不是所有的數(shù)據(jù)庫(kù)操作都可以只用一條或少數(shù)幾條SQL語(yǔ)句完成的。很多時(shí)候需要查詢(xún)多張表,這是如果其中一條語(yǔ)句查詢(xún)錯(cuò)誤那么后面的執(zhí)行對(duì)于需求來(lái)說(shuō)將沒(méi)有任何意義,這是就造成了不必要的操作,這是可以使用事務(wù)進(jìn)行回滾,不去執(zhí)行下面的錯(cuò)誤語(yǔ)句。