1、wait_timeout
預設288800秒(8小時)。jdbc連線池maxwait或者maxldeltime這兩個引數要小於這個值,否則,當你的連線長時間沒和資料庫互動,伺服器早就把你的連線斷開了,而你的連線池還認為是有效連線,除非你設定testonborrow或者設定testonreturn設定為true,這樣當連線每次從連線池中取出或者放回的時候檢查一下連線是否有效,不過這樣會犧牲一點效能。
2、再驚喜結果集合並(union或union all)時,如不需要進行結果去重,則必須使用union all,而不能使用union ;且儘量減少進行資料集去重。
3、用in代替or。sql語句中in包含的值不應過多,應少於300個;in是範圍查詢,mysql內部會對in的列表值進行排序後查詢,比or效率更高。
4、禁止進行字段資料型別的隱式轉換,所有轉換必須進行明確的資料型別轉換;隱式轉換會導致欄位上的索引失效,最常見的隱式型別轉換常見於時間型別與字串型別之間,建議所有時間型別欄位在mybatis中均以時間型別傳入,或者以字串傳入然後通過時間函式轉換字串為合法的時間格式,如下:
select name from table where create = date_formate('2010010101:02:03','%y-%m-%d %h:%i:%s');
5、禁止在where條件**現的過濾欄位上使用任何函式進行型別轉換,或者格式的轉換;正確的做法把傳入的值轉換為列型別所需要的;
錯誤寫法:
select name from table where create = date_formate(create,'%y-%m-%d %h:%i:%s') = '2010010101:02:03';
正確寫法:
select name from tablewhere create = date_formate('2010010101:02:03','%y-%m-%d %h:%i:%s');
6、禁止使用order by rand();
order by rand()會將資料從磁碟中讀取,進行排序,會消耗大量的io和cpu
mysql開發經驗 MySql開發經驗
1 wait timeout 預設288800秒 8小時 jdbc連線池maxwait或者maxldeltime這兩個引數要小於這個值,否則,當你的連線長時間沒和資料庫互動,伺服器早就把你的連線斷開了,而你的連線池還認為是有效連線,除非你設定testonborrow或者設定testonreturn設...
mysql 經驗 mysql經驗
uuid 獲取方法 replace uuid 將uuid 中的 去掉,即替換成空串 此外upper replace uuid 用於將字元轉換為大寫 去除重複 distinct select distinct pwd from t core resident user where empi 8a41b...
mysql安裝 經驗 mysql安裝經驗。
在同事那整了個免安裝版的mysql,然後新增到window服務,但是中間出現很多問題,總結一下個人經驗,希望其他人不要走彎路。2 接下來就需要進行一些列的配置才能使免安裝的mysql在服務中啟動,換句話說可以使用net start mysql命令啟動。以下以我把壓縮包解壓到f mysql目錄為例。3...