閱讀阿裏文檔總結————Mysql數據庫篇
一:建表規範
1.針對於任何字段如果為非負數,必須是 unsigned;
2.表達邏輯刪除的字段名 is_deleted,1 表示刪除,0 表示未刪除; (1為是;0為否)
3.主鍵索引名為 pk_字段名;唯一索引名為 uk_字段名;普通索引名則為 idx_字段名;
4.小數類型為 decimal,禁止使用 float 和 double;
5.如果存儲的字符串長度幾乎相等,使用 char 定長字符串類型
6.表必備三字段:id, gmt_create, gmt_modified
7.合適的字符存儲長度,不但節約數據庫表空間、節約索引存儲,更重要的是提升檢 索速度;
8.利用覆蓋索引來進行查詢操作,避免回表;
9.建組合索引的時候,區分度最高的在最左邊;
10.防止因字段類型不同造成的隱式轉換,導致索引失效。
二:SQL語句
1.不要使用 count(列名)或 count(常量)來替代 count(*),count(*)是 SQL92 定義的 標準統計行數的語法,跟數據庫無關,跟 NULL 和非 NULL 無關
解釋:count(*)會統計值為 NULL 的行,而 count(列名)不會統計此列為 NULL 值的行
2.count(distinct col) 計算該列除 NULL 之外的不重復行數,註意 count(distinct col1, col2) 如果其中一列全為 NULL,那麽即使另一列有不同的值,也返回為 0
3.當某一列的值全是 NULL 時,count(col)的返回結果為 0,但 sum(col)的返回結果為 NULL,因此使用 sum()時需註意 NPE 問題
可以使用如下方式來避免 sum 的 NPE 問題:SELECT IF(ISNULL(SUM(g)),0,SUM(g)) FROM table
閱讀阿裏文檔總結————Mysql數據庫篇