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