關於mysql的最佳化
MYSQL的最佳化一個很棘手的問題,也是一個公司最想處理得當的問題.
那麼今天,本人為大家帶來幾點最佳化資料庫的方法:
1.選取最適用的欄位屬性
一般來說,資料庫的的表越小,在其上面執行的查詢也會越快.因此,我們在設計表的時候可以將表中的寬度設的儘可能的小.
對於欄位來說,,我們儘量和值為NOT NULL,這樣在查詢時,資料庫不用比較NULL值
對於某些文字欄位,可以用ENUM型別來對該欄位下的數值進行限制.
2.使用JOIN來代替子查詢
瞭解mysql的人都知道,使用子查詢可以一次性的完成很多邏輯上的需要多個複雜步驟才能完成的SQL操作,但是這樣的查詢會大大降低查詢的速率
如果使用JOIN來完成此項工作的話,速度會快很多.
JOIN之所以效率很高.是因為MYSQL不需要在記憶體中建立臨時表來完成這個邏輯上的兩個步驟的查詢工作.
3.UNION來代替手動建立的臨時表
mysql從4.0版本開始支援聯合查詢.
它可以把需要使用臨時表的兩條或更多的select查詢合併的一個查詢中,在客戶端的查詢會話結束的時候,臨時表會自動刪除
從而保證資料庫整齊,高效.
4.事務
儘管使用子查詢,JOIN和UNION來建立各種查詢.但並不是所有的操作都可以用一條或幾條SQL語句就可以完成的
為了防止資料庫出現意外.就要使用事務,推薦使用InnoDB引擎
其作用是可以保持資料庫資料的一致性和完整性.
另一個作用則是在多個使用者同時使用相同的資料來源時,它可以鎖定資料庫的方法來為童虎提供一種安全的訪問方式
5.鎖定表
事務雖好,可由於它的獨佔性,有時會影響資料庫的效能.假設有成千上萬的使用者同時訪問一個資料庫,就會產生比較嚴重的響應延遲
那麼鎖定表,就可以起到維護資料完整性的作用,來獲得更好的效能.
6.使用外來鍵
鎖定表也有它的弊端,那就是它不能保證資料的關聯性.這個時候,我們就可以使用外來鍵.
注意,引擎要用innodb而不是myisam型別
7.使用索引
索引是提高資料效能的常用方法,它可以令資料庫伺服器以比沒有索引快的多的速度檢索特定的行,尤其是在查詢語句中包含MAX(),MIN()和ORDER BY 這些命令的時候,效能提高更為明顯.
一般來說,索引應建立在那些用於JOIN ,WHERE 判斷 和ORDER BY 排序的欄位上,儘可能不要對資料庫中某個含有大量重複值的欄位建立索引.
8.最佳化的查詢語句
絕大多數下,用索引可以提高查詢的速度,但是如果SQL語句使用不恰當的話,索引將無法發揮作用.
那麼該注意以下幾個方面:
1.最好在相同型別的欄位間進行比較的操作
2.在建有索引的欄位上儘量不要使用函式進行操作.
3.在搜尋字元型欄位時,我們有時會使用LIKE關鍵字和萬用字元,這種做法雖然簡單,但也是以犧牲系統效能為代價的操作.
最後,應該注意避免在查詢中讓MYSQL進行自動型別轉換,因為轉換過程也會讓索引變得不起作用!
以上,就是我為大家總結的幾點關於最佳化資料庫的操作,僅供參考,若有雷同,實屬巧合!
作者:戀夏啊
原文連結:https://www.cnblogs.com/cdqblog/p/10214652.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1020/viewspace-2819813/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於mysql中limit最佳化的問題MySqlMIT
- mysql 關於大資料量日誌表的最佳化過程MySql大資料
- 關於MySQLMySql
- 關於 const 最佳化。
- 關於mysql的優化MySql優化
- 關於自定義程式的效能最佳化
- mysql關於mysql.server的總結MySqlServer
- 關於mysql的query_cacheMySql
- 面試關於 MySQL 的編寫面試MySql
- Mysql 關於event的詳解MySql
- mysql關於variable的總結MySql
- 關於MySQL使用的時長MySql
- 關於MYSQL flush table的作用MySql
- 關於Flutter中的StatefulWidget小最佳化Flutter
- Sql最佳化(三) 關於oracle的併發SQLOracle
- 關於Execute to Parse %:比例太低的最佳化思路
- 關於分頁查詢的最佳化思路
- 【Mysql】關於mysql存入emoji表情的問題MySql
- mysql~關於mysql分割槽表的測試MySql
- 關於SHELL+MYSQLMySql
- 關於SUNONE+MYSQLNoneMySql
- 【MySQL】 效能最佳化之 延遲關聯MySql
- 關於資料字典的查詢效率最佳化
- 關於 MySQL 的巢狀事務MySql巢狀
- Mysql關於procedure、function的詳解MySqlFunction
- 關於mysql連線慢的分析.MySql
- 關於mysql連線的問題MySql
- 關於MySQL的compound-statementSQLMySql
- MySQL 關於毫秒的處理薦MySql
- 關於最佳化API介面響應速度API
- mysql 關於exists 和in分析MySql
- 【mysql】關於binlog格式MySql
- 關於查詢最佳化的一些總結
- MySQL:關於ICP特性的說明(未完)MySql
- 《關於MySQL的一些騷操作》MySql
- mysql關於臨時表的總結MySql
- 關於Mysql索引的資料結構MySql索引資料結構
- mysql關於mysqld_safe的總結MySql