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