1、對於年份的處理,由於考慮到年的處理和運算,單寫一個獲取年的類,即動態的獲得須要的表名稱,庫名稱等等sql
public static String getTable(String table ,Date date) {數據庫
String newtable = "";優化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");spa
newtable = table +sdf.format(date);orm
return newtable ;索引
}事務
2、根據既定的業務需求,給出不一樣的解決方案內存
一、給出需求的時候先考慮能夠解決的方案而不是過早的否認咱們作的大部分是工程類的東西,工程類的東西須要的實際的結果或者是結論來證實理論。因此咱們須要不斷的去試,不斷的去檢驗每一個方案,最終肯定一個相對最優化的方案。資源
二、在節省數據庫資源消耗的前提下,通常的解決是放在程序中,或者說是外部內存的運行處理,好比說energy2014表中的統計能量,由於咱們需求統計,可是頻繁的統計而且更新數據是很消耗資源的(update 數據庫時候先須要找到該條記錄<這個也是很消耗時間的>,而每個update又是一個事務,這個事務的執行是不能批量執行的)。這會影響咱們的效率和資源的利用get
三、每一個人的出發點是不一樣的,個人出發點是數據庫,你的出發點是程序,而他的出發點多是內存,等等,由於出發點不一樣考慮問題的角度不一樣,給出的解決方案不一樣,可是最終咱們的目的是相同的那就是以更好的更優化的程序來呈現。
3、數據庫鏈接和sql語句
一、數據庫鏈接是越少越好,用完鏈接關閉是必須的,可是若是是嵌套sql交互<好比 兩層for循環,內外層都去鏈接數據庫去執行操做,這對一個數據庫來講是要命的,會瞬間佔用很大的cpu ,當你的程序是頻繁的操做時候,那麼數據庫會保持長時間佔用cpu >
二、數據庫的操做,儘可能不將數據庫計算的結果存儲下來<計算機的高效就是來自他的計算能力,而不是邏輯處理能力>,固然這是創建在有沒有必要的前提下說的,可是不是特殊操做或者強制性的操做,仍是不推薦大量更新數據庫數據
三、在不影響需求結果的前提下,轉換變量之間的邏輯關係,將需求變量之間的邏輯關係轉換爲主鍵或者有索引列的關係。
四、插入操做盡可能使用批量插入,基於單表的操做使用 //addBatch(); executeBatch();基於多表的操做使用手動製造批量插入的insert 帶着多個value 值
五、若是非要使用二層循環來搞定查詢結果那麼儘可能的使用一次性查找出各自的東西放到內存中在外部「內存中」 爲各自的表之間創建關係,如Map等 至關於在外部創建索引關係圖