特別注意:
【強制】建立表時必須顯式指定字符集為utf8或utf8mb4。
【強制】建立表時必須顯式指定表儲存引擎型別,如無特殊需求,一律為innodb。
【強制】建表必須有comment。
【建議】建表時關於主鍵:強制要求主鍵為id,型別為int或bigint,且為auto_increment。
【建議】表中所有字段必須都是not null屬性,業務可以根據需要定義default值。 因為使用null值會存在每一行都會占用額外儲存空間、資料遷移容易出錯、聚合函式計算結果偏差等問題。
【強制】對於超過100w行的大表進行alter table,必須經過dba審核,並在業務低峰期執行。
【強制】資料庫本身庫、表、列所有字符集必須保持一致,為utf8或utf8mb4。
【強制】insert語句指定具體欄位名稱,不要寫成insert into t1 values(…),道理同上。
【強制】除靜態表或小表(100行以內),dml語句必須有where條件,且使用索引查詢。
【強制】禁止在業務的更新類sql語句中使用join,比如update t1 join t2…
線上禁止使用的sql語句
【高危】禁用update|delete t1 … where a=xx limit xx; 這種帶limit的更新語句。
因為會導致主從不一致,導致資料錯亂。建議加上order by pk
【高危】禁止使用關聯子查詢,如update t1 set … where name in(select name from user where…);效率極其低下。
【強制】禁用procedure、function、trigger、views、event、外來鍵約束。
因為他們消耗資料庫資源,降低資料庫集群可擴充套件性。推薦都在程式端實現。
【強制】禁用insert into …on duplicate key update…
在高併發環境下,會造成主從不一致。
【強制】禁止聯表更新語句,如update t1,t2 where t1.id=t2.id…
【強制】禁止單獨使用負向查詢not、!=、<>、!<、!>、not in、not like等,會導致全表掃瞄。如select oid from t_order where status != 1 不行,select oid from t_order where uid=123 and status != 1 兩個以上的where條件可以有負向查詢
mysql 建表規則
特別注意 強制 建立表時必須顯式指定字符集為utf8或utf8mb4。強制 建立表時必須顯式指定表儲存引擎型別,如無特殊需求,一律為innodb。強制 建表必須有comment。建議 建表時關於主鍵 強制要求主鍵為id,型別為int或bigint,且為auto increment。建議 表中所有字段...
Mysql建表和索引使用規範
mysql建表和索引使用規範 tt lan2003 一 mysql建表,欄位需設定為非空,需設定字段預設值。二 mysql建表,欄位需null時,需設定字段預設值,預設值不為null。三 mysql建表,如果字段等價於外來鍵,應在該字段加索引。四 mysql建表,不同表之間的相同屬性值的字段,列型別...
mysql建立使用者表 mysql 建庫建表建使用者
1.建立資料庫 create database school 2.使用資料庫 use school 3.建立使用者 create user jame localhost identified by jame 4.授權使用者 注意這裡是用了 哦,可以自己講school也替換成 號 grant sele...