在設計資料結構時需要注意:
1、永遠為表設定乙個自增主鍵id,並盡可能的利用此id進行構造
(在配置表中)盡可能的用上
unsigned,並盡可能的小。能用tinyint(1位元組)、smallint(2位元組)、mediumint(3位元組),就不用int(4)位元組
2、盡可能的使用enum,比如性別,屬相等,因enum是儲存為tinyint
3、盡可能的使用not null,除非業務需要使用null
4、把ip位址存為int unsigned ,使用 inet_aton() 和 inet_ntoa() 來進行轉換
5、盡量使用短的字元型別
6、盡量使用固長的字元型別,當表中所有的字段都是固定長度,db 會認為表是static型別,如果有固定長度和非固定長度的字段盡量採用垂直分割,將表分割。
靜態型別的表有以下特點:
a、非常快,由於是固定長度,db很容易計算出下行的偏移量,所以讀取速度會很快,如果不是固定長度,要找到下行資料必須找到主鍵(這也是主鍵使用自增id的重要的原因)
b、容易快取
c、崩潰後容易重建,因為行是在固定位置
d、比變長需要更多的磁碟空間
e、一般不用優化,除非刪除了大量資料,採用optimize table 進行優化
7、垂直分割是把1張表的資訊分割成幾張表,應注意以下幾點
a、盡量把固長和非固定長度的字段分離
b、經常使用和非經常使用的字段分離
c、頻繁更新和更新不頻繁的字段分離(比如登入時間等),因為表的更新會釋放掉表的快取,如果更新頻繁,基本上就用不上快取。
d、拆分出去的字段,不能經常做join操作,否則效能比不拆分還要下降的多。
9、水平分割
a、設計時備份表和業務表進行分庫。這樣在做資料庫遷移、備份、恢復時往往會有比較好的效果
b、資料量很大的時候,可以將一張表的資料分發到小表中去,以提高插入,查詢的效率(比如原始資料的匯集)
8、選擇正確的儲存引擎
a、myisam 適合用在業務量小,更新操作不頻繁且不需要事務的應用
b、innodb 使用在更新操作頻繁,需要事務的應用
資料結構 結構體的注意事項
方式一 typedef struct lnode lnode,linklist 方式二 struct lnode typedef struct lnode lnode typedef struct lnode linklist 指向struck lnode的指標 等價寫法 lnode l linkl...
mysql表設計注意事項
1 主鍵,最好使用業務主鍵,採用時間 伺服器編號 序號,進行生成,如果沒有特殊要求,直接使用資料庫自增序列值即可。主要是達到查詢效率快,不用走二級索引 2 對於業務資料,如果需要對多個字段建立索引,且這幾個字段查詢的時候都是一起作為條件的,可以設計為聯合索引。建索引的時候,將篩選力度大的屬性放前面,...
PCB設計注意事項
在進行設計之前要將各種約束規則設定好。1 線和孔的間距要大一點。2 小訊號部分,注意保護。小訊號指的是小電流訊號 保護,通常是進行包地。晶振電路也屬於小訊號電路。晶振要緊靠晶元引腳放置,距離太遠容易出現干擾。對於四個引腳的電容,不要從中間穿插走線。避免短路。3電容的擺放應該起到應有的作用。例如,通訊...