1、不要使用使用null欄位,設定字段預設值
bad case:
name
char(32) default null
age
int not null
good case:
name
char(32) not null default 」
age
int 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...