MySQL優化 SQL優化

2021-10-02 14:58:43 字數 1916 閱讀 7913

其實sql語句的優化核心就在避免全表掃瞄上面

對查詢語句優化,避免全表掃瞄

首先應考慮在whereorder by涉及的列上建立索引

避免在where子句中對字段進行表示式函式操作(避免where進行null、!=、>= 、<=等運算導致的全表掃瞄)

group by後面增加order by null就可以防止group by的預設排序 (預設排序可能會降低速度)

使用join連線代替子查詢 (join不會在記憶體建立臨時表,子查詢會)

避免對沒有索引使用or導致索引失效而全表掃瞄(union可以代替就用union

慎用innot in( 考慮是否可以exists代替in

查詢資料的範圍限制(如果只要一條,語句結尾加上limit 1

禁止使用like %開頭方式的模糊查詢 (考慮全文索引)

禁止使用select *方式查詢資料 (要什麼列就寫什麼列)

建立欄位時給予預設值(避免查詢的時候where colum = null的情況出現)

《sql 連線的區別》

《聯合查詢 union和union all的區別》

遵守三大正規化

適當的根據專案設計特殊列(反正規化)

字段、索引越少越好

欄位過多時分隔成兩個表

字段型別選擇(合適的型別能夠節省空間及避免設計不當導致coding時的問題)

合適的索引(索引建在小字段上,對於大的文字字段甚至超長字段,不建索引)

盡量避免字段值允許為null盡量避免使用主外來鍵

每張表一定要有id使用procedure analyse()分析表(mysql會給出你相關建議)

正確的選擇引擎 (myisam和inoodb)

myisam和inoodb的區別?

屬性名稱

myisam

inoodb

事務不支援

支援全文索引

支援不支援

鎖機制表鎖

行鎖主外來鍵

不支援支援

這幾個點的區別比較明顯,省略其他的…

手動方式

windows下的話配置好環境變數,用命令備份(source命令恢復)

linux下的話進入到執行目錄和windows一樣用命令操作

備份語法:mysqldump –u -賬號 –密碼 資料庫 [表名1 表名2…] > 檔案路徑

恢復語法:source 檔案路徑

自動(定時任務)方式

自動方式其實說白了就是定時方式嘛,無論是windows還是linux都是一樣的思路。先編寫指令碼 (.bat/.sh指令碼) 然後通過其他方式定時執行。windows的話找到任務計畫程式建立任務即可,inux的話可以通過crontab來完成。網上有很多相關的,看一遍就懂。

tips:sql優化這方面還是要去積累,久了就有經驗了,技巧是很多的學不完的畢竟。

Mysql優化 SQL語句優化

索引優化 where 字段 組合索引 最左字首 索引下推 非選擇行 不加鎖 索引覆蓋 不回表 on兩邊 排序 分組 explain分析語句情況,看建立索引沒,或者建立錯誤,響應時間長的話可以看下慢查詢日誌 盡量不要用 查所有字段的話,select查詢列中的字段如果沒有索引的話,會造成回表 limit...

MySQL優化(一)常用SQL優化

一 新增 二 刪除 delete from 刪除語句加where條件,如果是刪除全部記錄,使用truncate table 表名,而不使用delete語句。三 修改 四 查詢 索引這裡就不重複了,一般在建表時對常用的查詢欄位就應該加上索引。1 單錶查詢 首先盡量只查詢單錶,可以分解成多次單錶查詢的盡...

MySQL優化(二) 優化SQL語句

2.優化子查詢,派生表和檢視引用 3.優化information schema查詢 4.優化資料變更宣告 5.優化資料庫許可權 6.其他優化技巧 資料庫應用程式的核心邏輯是通過sql語句執行的,無論是直接通過直譯器發出還是通過api在後台提交。查詢以select 語句的形式執行資料庫中的所有查詢操作...