本文主要介紹數(shù)據(jù)庫(kù)性能優(yōu)化的方法有哪些(如何優(yōu)化數(shù)據(jù)庫(kù)性能)?,下面一起看看數(shù)據(jù)庫(kù)性能優(yōu)化的方法有哪些(如何優(yōu)化數(shù)據(jù)庫(kù)性能)?相關(guān)資訊。
數(shù)據(jù)庫(kù)優(yōu)化包括三個(gè)部分:數(shù)據(jù)庫(kù)優(yōu)化、數(shù)據(jù)庫(kù)表優(yōu)化和程序運(yùn)行優(yōu)化。本文是第三部分。概述:程序訪問(wèn)優(yōu)化也可以看作是訪問(wèn)sql語(yǔ)句的優(yōu)化。一個(gè)好的sql語(yǔ)句可以降低程序的許多性能。列舉了常見(jiàn)的錯(cuò)誤習(xí)慣,并提出了相應(yīng)的解決方法。首先,運(yùn)營(yíng)商優(yōu)化1。existing和existing in,not in運(yùn)算符的表現(xiàn)與外部表和內(nèi)部表不同,但建議在大數(shù)據(jù)表中替換為existing。不在索引中,不能替換為不存在。2。為空或非空操作。該索引不是索引空值,因此這樣的操作不能使用該索引??梢杂闷渌幚恚热鐢?shù)字型,判斷大于0,字符串型設(shè)置一個(gè)默認(rèn)值,判斷是否等于默認(rèn)值。3.運(yùn)算符(不等于)它并不意味著運(yùn)算符不使用索引,因此處理它只會(huì)產(chǎn)生全表掃描,而不是其他使用相同函數(shù)的業(yè)務(wù),如0而不是0或4。在全文搜索中搜索文本數(shù)據(jù),而不是搜索全文搜索,總是比相似搜索好:(1)全文搜索使你能夠?qū)崿F(xiàn)類似于無(wú)法完成的復(fù)雜搜索,比如搜索一個(gè)單詞或短語(yǔ),搜索與另一個(gè)單詞或短語(yǔ)相似的單詞或短語(yǔ),或者搜索同義詞。(2)比圖片搜索更容易實(shí)現(xiàn)全文搜索(尤其是復(fù)雜搜索)。二、sql語(yǔ)句優(yōu)化1。不要在查詢中使用select。為什么可以 我們不用它嗎?全世界的人都知道,但是很多人都習(xí)慣了。要知道能省就省。2。盡可能多地寫(xiě)where子句。盡量不要寫(xiě)沒(méi)有位置的sql語(yǔ)句。3.請(qǐng)注意選擇后的where子句,因?yàn)槟x擇將數(shù)據(jù)插入臨時(shí)表。這個(gè)過(guò)程鎖定了一些系統(tǒng)表。如果where子句返回的數(shù)據(jù)太多或者太慢,就會(huì)導(dǎo)致系統(tǒng)表長(zhǎng)時(shí)間鎖定,插入其他進(jìn)程。4。對(duì)于聚合查詢,可以使用子句進(jìn)一步限制返回的行數(shù)。5。避免使用臨時(shí)表(1)除非必要,盡量避免使用臨時(shí)表。相反,您可以使用表變量。(2)大部分時(shí)間(99%)表變量存儲(chǔ)在內(nèi)存中,所以速度比臨時(shí)表快。臨時(shí)表是駐留在tempdb中的數(shù)據(jù)庫(kù),所以臨時(shí)表的操作需要跨數(shù)據(jù)庫(kù)通信,速度較慢。6。減少數(shù)據(jù)庫(kù)訪問(wèn)次數(shù):在編程中,最好將一些全局變量表放在內(nèi)存中,或者用其他減少數(shù)據(jù)庫(kù)訪問(wèn)次數(shù)。7。盡可能少工作。盡量減少無(wú)效工作,但這是針對(duì)客戶端程序的,需要注意如下:a、同一個(gè)語(yǔ)句的多次執(zhí)行,尤其是一些基礎(chǔ)數(shù)據(jù)的多次執(zhí)行,是很多程序員很少注意到的。b、減少多次數(shù)據(jù)轉(zhuǎn)換,可能需要數(shù)據(jù)。轉(zhuǎn)換是設(shè)計(jì)問(wèn)題,但是減少次數(shù)是程序員可以做到的。c、剔除不必要的子查詢和連接查詢表,一般說(shuō)明執(zhí)行計(jì)劃的外部連接和額外連接表帶來(lái)的額外開(kāi)銷。d、相同條件下同一個(gè)表的幾種較新的組合,比如用所有員工的名字更新員工設(shè)置模型= 海爾 其中emp _ id = vpa30890f = 楊 其中emp_id =vpa30890f。這兩個(gè)語(yǔ)句應(yīng)該合并成下面的語(yǔ)句:把所有雇員的名字= 楊 在emp _ id = vpa30890f e,并且更新操作不會(huì)中斷刪除操作和插入操作。雖然功能相同,但性能卻大相徑庭。唐 t編寫(xiě)一些無(wú)意義的查詢,比如從1 = 2的雇員中選擇* 3,在下面兩個(gè)select語(yǔ)句中使用原則1):select * from table 1,field = 0;select *從表1中,tian = 0,tian = 0,第一條select語(yǔ)句比第二條select語(yǔ)句更有效,因?yàn)榈诙lselect語(yǔ)句消耗了大量的系統(tǒng)資源。第一個(gè)原則:最嚴(yán)格的條件應(yīng)該放在where子句之前。2)在下面的select語(yǔ)句中:從選項(xiàng)卡中選擇*,…;如果有索引index (a,b,c),那么where子句中字段的順序應(yīng)該與索引中的順序相同。第二個(gè)原則:where子句中字段的順序應(yīng)該與索引中字段的順序一致。以下假設(shè)是,在major中有一個(gè)唯一索引i1和一個(gè)非唯一索引i2。3)在字段中選擇3,= sdf 快速路徑選擇* from field = sdf 慢速tb,因?yàn)楹笳邔⒃诒碇髮?duì)索引掃描進(jìn)行額外的rowid訪問(wèn)。選項(xiàng)3,字段中tb的路徑= sdf 快速,選項(xiàng)3,從tb到現(xiàn)場(chǎng)的路徑 sdf 慢,因?yàn)榍罢呖梢钥焖俣ㄎ凰饕?。選擇3 2%,選擇3用于結(jié)核病。;r 快速路徑,并選擇r 對(duì)于肺結(jié)核專業(yè)來(lái)說(shuō)比較慢,因?yàn)楹笳卟皇褂盟饕?)使用一個(gè)索引,例如:選項(xiàng)3,從tb(2)= ;rmn 去吧。如果一個(gè)表有20000條記錄,建議不要使用這個(gè)函數(shù);如果表中的記錄超過(guò)50,000條,則嚴(yán)格禁止使用該函數(shù)。以下2萬(wàn)條記錄沒(méi)有限制。
了解更多數(shù)據(jù)庫(kù)性能優(yōu)化的方法有哪些(如何優(yōu)化數(shù)據(jù)庫(kù)性能)?相關(guān)內(nèi)容請(qǐng)關(guān)注本站點(diǎn)。