一、選取最適用的字段屬性數據庫
二、使用鏈接(JOIN)來代替子查詢(Sub-Queries)安全
三、使用聯合(UNION)來代替手動建立的臨時表服務器
四、事務
儘管咱們可使用子查詢(Sub-Queries)、鏈接(JOIN)和聯合(UNION)來建立各類各樣的查詢,但不是全部的數據庫操做均可以只用一條或少數幾條SQL語句就能夠完成的。更多的時候是須要用到一系列的語句來完成某種工做。可是在這種狀況下,當這個語句塊中的某一條語句運行出錯的時候,整個語句塊的操做就會變得不肯定起來。設想一下,要把某個數據同時插入兩個相關聯的表中,可能會出現這樣的狀況:第一個表中成功更新後,數據庫忽然出現意外情況,形成第二個表中的操做沒有完成,這樣,就會形成數據的不完整,甚至會破壞數據庫中的數據。要避免這種狀況,就應該使用事務,它的做用是:要麼語句塊中每條語句都操做成功,要麼都失敗。換句話說,就是能夠保持數據庫中數據的一致性和完整性。事物以BEGIN關鍵字開始,COMMIT關鍵字結束。在這之間的一條SQL操做失敗,那麼,ROLLBACK命令就能夠把數據庫恢復到BEGIN開始以前的狀態。
BEGIN; INSERTINTOsalesinfoSETCustomerID=14;UPDATEinventorySETQuantity=11WHEREitem='book';COMMIT;
事務的另外一個重要做用是當多個用戶同時使用相同的數據源時,它能夠利用鎖定數據庫的方法來爲用戶提供一種安全的訪問方式,這樣能夠保證用戶的操做不被其它的用戶所幹擾。
五、鎖定表
儘管事務是維護數據庫完整性的一個很是好的方法,但卻由於它的獨佔性,有時會影響數據庫的性能,尤爲是在很大的應用系統中。因爲在事務執行的過程當中,數據庫將會被鎖定,所以其它的用戶請求只能暫時等待直到該事務結束。若是一個數據庫系統只有少數幾個用戶來使用,事務形成的影響不會成爲一個太大的問題;但假設有成千上萬的用戶同時訪問一個數據庫系統,例如訪問一個電子商務網站,就會產生比較嚴重的響應延遲。
其實,有些狀況下咱們能夠經過鎖定表的方法來得到更好的性能。性能
六、使用外鍵
鎖定表的方法能夠維護數據的完整性,可是它卻不能保證數據的關聯性。這個時候咱們就可使用外鍵。優化
七、使用索引
索引是提升數據庫性能的經常使用方法,它能夠令數據庫服務器以比沒有索引快得多的速度檢索特定的行,尤爲是在查詢語句當中包含有MAX(),MIN()和ORDERBY這些命令的時候,性能提升更爲明顯。網站
八、優化的查詢語句
絕大多數狀況下,使用索引能夠提升查詢的速度,但若是SQL語句使用不恰當的話,索引將沒法發揮它應有的做用。索引