文章載入中... ☆前言☆ 對(duì)于初學(xué)者來說,養(yǎng)成代碼規(guī)范的習(xí)慣尤為重要,同樣在設(shè)計(jì)數(shù)據(jù)庫表以及編寫 SQL語句時(shí),怎樣優(yōu)化SQL語句以及提高查詢效率?這個(gè)值得每一位java初學(xué)者的注意。下面我就簡(jiǎn)單介紹一些常用的Mysql數(shù)據(jù)庫的設(shè)計(jì)及語句優(yōu)化規(guī)則。 ?數(shù)據(jù)庫表設(shè)計(jì)規(guī)則 1、冗余設(shè)計(jì);即設(shè)計(jì)數(shù)據(jù)庫可以適當(dāng)設(shè)計(jì)冗余字段。 2、設(shè)置刪除狀態(tài)字段;為了表面鎖表,盡量用關(guān)鍵字update,少用delete。 3、字段上面盡量不要用null做默認(rèn)值。 4、適當(dāng)加入索引,過量索引會(huì)減慢插入數(shù)據(jù)的速度。 5、主鍵類型盡量采用tinyint;因?yàn)橹麈I一般都是無符號(hào)的int,使用tinyint主鍵量可以達(dá)到int的兩倍。
?Mysql語句優(yōu)化 1、使用select語句盡量多用字段,使用 * 效率更低。 2、 查詢數(shù)量,盡量使用類似“count(1)”字樣。 3、 查詢一條語句,盡量在后面加上“l(fā)imit1”(數(shù)據(jù)庫查詢到一條即停止)。 ?SQL語句優(yōu)化遵循原則 1、盡量避免在列上運(yùn)算,這樣會(huì)導(dǎo)致索引失效。 2、使用 JOIN 時(shí),應(yīng)該用小結(jié)果集驅(qū)動(dòng)大結(jié)果集,同時(shí)把復(fù)雜的 JOIN 查詢拆分成多個(gè)query,因?yàn)镴OIN 多個(gè)表,可能導(dǎo)致更多的鎖定和堵塞。 3、使用LIKE 時(shí),避免使用 %%。 4、select 指定查詢字段,不要全查出來,節(jié)省內(nèi)存。 5、使用批量插入語句節(jié)省交互。 6、limit的基數(shù)比較大時(shí),使用 between,between 限定比 limit 快,但是between也有缺陷,如果id中間有斷行或是中間部分id不讀取的情況,數(shù)據(jù)會(huì)少。 例如:select * from t where 1 limit 100000,10 可改為:select * from twhere id between 100000 and100010 7、不要使用rand 函數(shù)取多條隨機(jī)記錄。 8、避免使用 NULL。 9、不要做無謂的排序操作,而應(yīng)盡可能在索引中完成排序。
|
|