mysql優化總結

2021-08-29 04:44:08 字數 1079 閱讀 3354

1、資料庫設計

滿足三大正規化(第一正規化:列的原子性 第二正規化:確保表中的每列都和主鍵相關,

乙個表只能儲存一類資料,不能放多類的資料,第三正規化:確保同一行資料不存在傳遞關係)

2、資料庫建表

(1)儲存引擎選擇;需要支援事務、外來鍵、更新和查詢都很頻繁的使用innodb,

如果要使用全文索引、資料更新少、查詢多採用myisam

(2)schema欄位型別選取,必須選擇合適的字段型別,比如正整數使用unsinged int,定長字串採用char,變長使用varchar;

盡量少用text、blob等大字段型別,如果有盡量分成多表儲存;

(3)建議字段定義為not null,設定預設值。null值占用索引空間,有null值的列導致索引的統計資訊、索引以及比較運算更加負責

(4)每個欄位寫清楚注釋及定義好錶所用的編碼格式

3、索引

(1)按照業務需求建索引,多餘無用的索引只能增加系統的額外開銷

(2)聯合索引一般選擇選擇度高的列放在最前面

(3)長欄位索引使用字首索引,減少索引占用空間

(4)注意覆蓋索引的使用,盡量不要建立冗餘的索引

(5)控制索引的個數和聯合索引的字段個數

4、sql語句編寫

(1)where 字段篩選順序和建立聯合索引字段順序一致

(2)sql篩選條件等號左邊盡量不要使用表示式、函式,導致不能使用索引

(3)like 盡量使用字首匹配

(4)不要使用select *,按照自己的需要取字段,很多時候字段取得越少使用覆蓋索引的機會就越大

(5)寫完sql使用explain查詢一下執行計畫,盡量type優於range

(6)使用limit限制取資料條數

(7)非等值條件後面不能使用索引,應該放在最後

(8)能批量查詢的不要迴圈查詢、嚴格控制每個表的資料量

5、業務

分庫分表

橫向和縱向切分

redis快取

統計資訊用臨時表

6、部署與資料備份同步

主從部署

mysqldump匯出備份資料

mysql優化總結:

mysql面試問題:

mysql優化總結

如果大家有異議,可以在後面補充。我會隨時更新的。現在大概列出如下 望各位補充 1.資料庫的設計 盡量把資料庫設計的更小的佔磁碟空間.1 盡可能使用更小的整數型別.mediumint就比int更合適 2 盡可能的定義欄位為not null,除非這個字段需要null.這個規則只適合欄位為key的情形 3...

mySQL優化總結

mysql通過explain命令輸出執行計畫,對要執行的查詢在這裡插入描述進行分析。執行計畫的限制 無法展示儲存過程,觸發器,udf 自定義函式 對查詢的影響 無法使用explain對儲存過程進行分析 早期版本的mysql只支援對select語句進行分析,如果想要分析update,insert語句需...

mysql優化總結

1.索引優化 1 1 資料大並且查詢多的地方使用索引 1 2 注意復合索引的最左原則 2.盡量不使用子查詢,用連線 join 去替換子查詢 3.連線表的時候,有篩選連表條件的在on加上 4.對結果集沒影響的情況下,選擇最小的表做驅動表 5.where條件排序應遵循乙個原則 排除越多的條件放在第乙個 ...