sql規範
庫名、表名、欄位名,必須見名知意,使用下劃線分割,禁止使用mysql保留字,如 desc 、 range 、 match 、 delayed 等,請參考 mysql 官方保留字。
臨時庫、表名,必須以tmp為字首,以日期為字尾,例如tmp_product_20190313
普通索引必須按照「idx_欄位名稱[_欄位名稱]」進行命名,例如idx_creator_id。
唯一索引必須按照「uniq_欄位名稱[_欄位名稱]」進行命名,例如uniq_creator_id。
索引名必須全部使用小寫,過長的欄位名可以採⽤縮寫形式,例如idx_creator_id_time。
表的命名最好是加上「業務名稱_表的作用」。
庫名與應用名稱盡量一致。
必須使用decimal代替float和double,以儲存精確浮點數,例如支付相關資料。
必須使用tinyint系型別代替enum型別,前者只要自己定義,後者卻要修改表。
禁止使用blob型別。
所有字段必須定義為not null,預設值定義為default 0或default 『』。
null<>null 的返回結果是 null ,而不是 false 。
null=null 的返回結果是 null ,而不是 true 。
null<>1 的返回結果是 null ,而不是 true 。
表達是與否概念的字段,必須使用is_***的方式命名,資料型別是unsigned tinyint(1 表示是,0 表示否)。
禁止隱式轉換,數值型別禁止加引號,字元和日期型別必須加引號。
禁止使用外來鍵,防止死鎖,避免隱藏的資料邏輯,一切外來鍵概念必須在應用層解決。
禁止使用儲存過程及檢視,其難以除錯和擴充套件,更沒有移植性。
建議最多更改和查詢的字段放在基礎表內,方便完整載入記憶體。
建議訪問頻率低的或大字段放到擴充套件表裡,分離冷熱資料。
建議使用intunsigned儲存ipv4,inet_aton()和inet_ntoa()用於ipv4與int互轉。
盡可能不使用text型別。
在滿足需求的前提下,varchar欄位盡量使用最少的字元數量,越少越有利,建議最多不要超過500個字元。
如果儲存的字串長度幾乎相等,建議使用char定長字串型別。
資料量隨時間增長的表,需要考慮做好歷史資料的歸檔。
統計行數時,使用count(*)或count(1),禁止使用count(欄位名)。
禁止使用order by rand()實現亂序效果,會導致cpu過高。
分批獲取大量資料時,禁止大偏移量的limitm,n語句,使用主鍵游標where pk>…limit n或利用延遲關聯、子查詢優化超多分頁場景。
必須使用isnull()來判斷是否為null值。
在**中寫分頁查詢邏輯時,若 count 為 0 必須直接返回,避免執行後面的分頁語句。
需要 join 的字段,資料型別必須絕對一致,多表關聯查詢時,必須保證被關聯的字段需要有索引。
多張關聯表之間,建議適當的冗餘字段,可以減少join查詢。
盡量避免使用反向匹配,例如notin、!=、notlike,無法用到索引。
同欄位or條件,用in代替,包含的值個數 應少於300個。
儘量減少與資料庫互動次數,盡量採用批量遞交、塊插入和快取(memcache)。
使用prepared statement批量遞交語句,可以提公升效能,且避免sql注⼊。
盡量避免在sql中進行算術和函式計算,應放置到應用伺服器端。
可以拆分複雜的join為多個小sql,避免大語句。
自學 java 筆記 day8(繼承下)
知識點 多型的概述 多型的擴充套件性 多型的轉型 多型成員特點 obejec類 equals object類 tostring 多型定義 某一類事物存的多種存在形態。例 動物中的貓 狗 貓這個物件對應的型別是貓型別 貓 x new 貓 同時貓也是動物中的一種,也可以把貓稱為動物 動物 y new 貓...
實習日記 Day8
今天是聊了很多天的一天 今日份心得體會的主題是 在聊天中學習 工作以外的興趣愛好 今天我竟然和導師閒聊好了幾小時,當然內容主要是圍繞著工作展開的話題。也許是昨天送的小禮物奏效了,又也許是因為今天真的很閒,以至於組裡有同事壓根沒來上班,再或者是因為上了年紀的男性長輩都比較喜歡 好為人師 我都不得而知 ...
坦克大戰 day 8
在tank類定義陣列,載入每一張。使用static關鍵字宣告的 塊叫靜態 塊。靜態塊用於初始化類,為類的屬性初始化。每個靜態 塊只會執行一次。如果有些 必須在專案啟動的時候就執行,那麼我們就可以使用靜態 塊來實現,這種 是主動執行的。坦克的陣列 private static image tankim...