MySQL優化 從建表開始優化

2021-08-17 07:22:40 字數 1254 閱讀 7020

1、不要使用使用null欄位,設定字段預設值

bad case:

namechar(32) default null

ageint not null

good case:

namechar(32) not null default 」

ageint not null default 0

2、用好數值型別

tinyint(1byte)

smallint(2byte)

mediumint(3byte)

int(4byte)

bigint(8byte)

bad case:

int(1)/int(11)

3、優先使用enum或set

例如:***enum (『f』, 『m』)

4、少用text/blob

varchar的效能會比text高很多;

實在避免不了blob,請拆表;

5、控制列數量

字段少而精,字段數建議在20以內;

6、拒絕3b

拒絕大sql語句:big sql

拒絕大事物:big transaction

拒絕大批量:big batch

1、不用select *

消耗cpu,io,記憶體,頻寬;

這種程式不具有擴充套件性;

2、sql語句盡可能簡單

一條sql只能在乙個cpu運算;

大語句拆小語句,減少鎖時間;

一條大sql可以堵死整個庫;

3、簡單的事務

limit越大,效率越低

select id from t limit 10000, 10;(返回10001-10010行)

=>

select id from t where id > 10000 limit 10;

5、使用group by

分組;

自動排序;

6、不在索引做列運算

mysql建表效能優化 MYSQL建表優化

除非單錶資料未來會一直不斷 否則不要一開始就考慮拆分,拆分會帶來邏輯 部署 運維的各種複雜度,一般以整型值為主的表在千萬級以下,字串為主的表在五百萬以下是沒有太大問題的。1 字段 a 盡量使用tinyint smallint medium int作為整數型別而非int,如果非負則加上unsigned...

mysql建表原則 mysql優化1 建表原則

建表三大原則 定長和變長分離 常用字段和不常用字段分離 使用冗餘欄位或冗餘表 1 定長與變長分離 如 id int,佔4個位元組,char 4 佔4個字元長度,也是定長,time 即每乙個單元值佔的位元組是固定的。在磁碟上查詢時,由於每一行長度固定,比如長度為10000,查下一條時只需查 10001...

MySQL 建表的優化策略

mysql 建表的優化策略 目錄1.字符集的選擇 1 2.主鍵 1 3.外來鍵 2 4.索引 2 4.1.以下情況適合於建立索引 2 4.2.以下的情況下不適合建立索引 3 4.3.聯合索引 3 4.4.索引長度 4 5.特殊字段 4 5.1.冗餘字段 4 5.2.分割字段 4 5.3.blob和c...