MySQL SQL設計規範

2021-10-21 03:09:31 字數 2851 閱讀 9276

a、物件名稱使用小寫字母、下劃線分割

統一命名使用全小寫字母和下劃線分割

列名與列表名在所有情況下忽略大小寫

b、物件名禁止使用mysql關鍵字/保留字

c、物件命名做到見名知意,限定在32個字元範圍內

d、臨時表,tmp字首、日期作為字尾,方便篩選、倒庫、清理

e、備份表,bak字首、日期作為字尾,方便篩選、倒庫、清理

f、儲存相同資料的列名和列型別必須一致

a、統一使用innodb儲存引擎(5.6之後為預設)

b、統一使用utf8字符集

編碼轉換容易導致亂碼,以及索引失效

c、所有表和字段都需新增注釋

d、控制資料量大小,控制在500w行

e、謹慎使用mysql分割槽表

減少跨分割槽查詢

更傾向於使用物理分表方式管理海量資料

f、減小表寬度、盡量做到冷熱資料分離

g、禁止在表中建立預留字段

修改表字段代價 >> 增加表字段

h、禁止在資料庫儲存、檔案等bin資料

j、禁止從開發環境、測試環境直連生產環境資料庫

a、不濫用、亂用索引

b、innodb表,必須有乙個主鍵 - b樹

c、常見索引列

d、索引列順序

使用最頻繁的列,置於聯合索引的最左側

避免冗餘和重複索引

對於頻繁的查詢,優先考慮使用覆蓋索引(所有的列都建立索引)

避免使用外來鍵

上述描述中有一條聯合索引最左側,使用資料區分度高的列。關於區分度,唯一值和總行數比值,區分度越高(接近1)。

select

count(distinct cat_1)/count(*) as cat_1_rate,

count(distinct cat_6)/count(*) as cat_6_rate

from outercooperationdb.product_core;

+------------+------------+

| cat_1_rate | cat_6_rate |

+------------+------------+

| 0.0002 | 0.0381 |

+------------+------------+

a、優先選擇符合儲存需要的最小資料型別

過大長度消耗更多的記憶體

b、避免使用text、blob資料型別

c、避免使用enum資料型別

d、盡可能把所有列定義為not null

e、使用timestamp或datetime型別儲存時間

timestamp(4byte),datetime(8byte)

f、金額相關型別,使用decimal型別儲存

a、建議使用預編譯語句進行資料庫操作

mysql> prepare stmt

-> from 'select sqrt(pow(?,2) + pow(?, 2)) as hypotenuse';

mysql> set @a = 3;

mysql> set @b = 4;

mysql> execute stmt using @a, @b;

mysql> deallocate prepare stmt;

b、避免型別隱式轉換

c、充分利用表中已存在的索引

d、程式連線不同資料庫,需使用不同賬號,禁止跨庫查詢

e、禁止使用select *進行查詢

無法使用覆蓋索引

減少表結構變更對程式帶來的影響

f、禁止使用不含字段列表的insert語句

g、避免使用子查詢

h、避免使用join關聯太多的表

i、減少通資料庫互動次數

j、使用in代替or語句

k、禁止使用order by rand()進行隨機排序

l、禁止where從句中對列進行函式轉換和計算

m、(明顯不會有重複值時)使用union all而不是union進行結果集合並

n、拆分複雜大sql為多個小sql進行查詢

a、對於超過百萬行的批量寫操作,需要分批多次進行操作

b、對於大表結構修改

c、禁止為程式使用賬號賦予super許可權(維護)

UI設計規範

以使用者為中心。設計由使用者控制的介面,而不是介面控制使用者。清楚一致的設計。所有介面的風格保持一致,所有具有相同含義的術語保持一致,且易於理解 較快的響應速度。簡單且美觀。使用者介面設計的乙個重要原則是使用者應該總是感覺在控制軟體而不是感覺被軟體所控制。操作上假設是使用者 而不是計算機或軟體 開始...

硬體設計規範

1 硬體需求說明書 2 硬體總體設計報告 3 單板硬體總體設計方案 4 單板硬體詳細設計 5 單板硬體過程除錯文件 6 單板硬體系統除錯報告 7 單板硬體測試文件 8 硬體總體方案歸檔詳細文件 9 硬體單板總體方案歸檔詳細文件 10 硬體資訊庫 2.2.2 硬體開發文件編制規範詳解 1 硬體需求說明...

Mysql設計規範

資料庫命名規範 1 所有資料庫物件名稱必須使用小寫字母並用下劃線分割。2 所有資料庫物件名稱禁止使用mysql保留關鍵字 3 資料庫物件的命名要能做到見名識義,並且最好不要超過32個字元。4 臨時表必須以tmp為字首並以日期為字尾。5 備份庫,備份表必須以bak為字首並以日期為字尾。6 所有儲存相同...