一、選擇資料型別的基本原則
1、myisam 資料表,最好使用固定長度的資料列代替可變長度資料列
2、innodb 建議使用varchar型別 , char平均占用的空間多於varchar,因此使用varchar來最小化需要處理的資料行的儲存總量和i/o是比較好的
二、資料列選擇
1、 char 與 varchar 建議使用varchar 可變長度儲存 節省空間
2、 text 和 blod
a、使用合成的索引
合成的索引列在某些時候是有用的,是根據其它的列的內容建立乙個雜湊值,並把這個值儲存在單獨的資料列中。我們要注意這種技術只能用於精確匹配的查詢,我們可以使用md5()函式生成雜湊值,也可以使用sha1()或crc32(),或者使用自己的應用程式邏輯來計算雜湊值。
合成的雜湊索引對於那些blob或text資料列特別有用。用雜湊識別符號值查詢的速度比搜尋blob列本身的速度快很多。
b、在不必要的時候避免檢索大型的blob或text值。
blob或text識別符號資訊儲存在合成的索引列中,可以搜尋索引列,決定那些需要的資料行,然後從合格的資料行中檢索blob或 text值。
c、把blob或text列分離到單獨的表中。
在某些環境中,把這些資料列移動到第二張資料表中,可以讓你把原資料表中 的資料列轉換為固定長度的資料行格式,這會減少主表中的碎片,使你得到固定長度資料行的效能優勢。它還使你在主資料表上執行 select *查詢的時候不會通過網路傳輸大量的blob或text值
d、浮點數與定點數
在 mysql 中 float、double(或 real)是浮點數,decimal(或 numberic)是定點數。
浮點數相對於定點數的優點是在長度一定的情況下,浮點數能夠表示更大的資料範圍;
它的缺點是會引起精度問題。
注意一下幾點:
a)、浮點數存在誤差問題;
b)、對貨幣等對精度敏感的資料,應該用定點數表示或儲存;
c)、程式設計中,如果用到浮點數,要特別注意誤差問題,並盡量避免做浮點數比較;
d)、要注意浮點數中一些特殊值的處理。
選擇合適的資料庫
這部分在nosql精粹這本書的混合持久化到選擇合適的資料庫,即第13章到第15章描述的非常好。推薦大家閱讀下。使用鍵值對資料庫來儲存購物車和會話資料,使用文件資料庫來儲存已完成的訂單 使用庫存及產品 來儲存關係型資料庫,關係型資料庫在事務處理上面的優勢是其他資料庫不可比擬的 使用它圖資料庫來儲存客戶...
資料庫優化建立合適的索引
索引 index 是幫助dbms高效獲取資料的資料結構。分類 普通索引 唯一索引 主鍵索引 全文索引 普通索引 允許重複值的出現 唯一索引 除了不能有重複的紀錄外,其他和普通索引一樣 使用者id,身份證,email,tel 主鍵索引 是隨著設定主鍵而建立的,也就是把某個列設定為主鍵的時候就會給該列建...
mysql資料庫優化 儲存引擎的選擇
一 mysql 儲存引擎包括 myisam innodb bdb memory csv 等等,其中innodb和bdb 提供事務安全表,其它儲存引擎都是非事務安全表。最常用的兩種儲存引擎 1 myisam 是mysql 的預設儲存引擎,當建立新錶時,未指定儲存引擎則預設是myisam.每個myisa...