《軟體開發效能優化系列》之表設計

2022-04-09 23:59:03 字數 713 閱讀 5224

樹狀表都是使用id和idparent兩個欄位來表示樹關係。對樹進行查詢只能使用自關聯方式,不光寫法麻煩而且記錄多的時候查詢效能會非常差。建議在設計樹表的時候可以考慮加入treepath欄位,記載到該節點記錄需要經歷的樹路徑。雖然會增加insert和update的成本。但是對查詢樹關係非常有幫助。可以避免大部分的自關聯查詢。

分割槽表:

記錄超過一百萬的表要考慮是否需要使用分割槽表。對於能夠明確確定分割槽字段,並且經常通過分割槽訪問記錄的。分割槽表會提高查詢效能。

冗餘字段:

一些關係查詢只查詢類似code、name等很少的字段。可以考慮將頻繁需要關聯查詢的這種字段冗餘到主表中。這種表設計會要求同步更新兩個字表,對於大部分查詢,會減少表的關聯,提高查詢效能。對於自定義項引用自由項的需求,使用這種冗餘設計能保證報表查詢的便利,能避免聯查表提高了查詢效率。

code、name字段長度

如果業務表中的code、name需要建立唯一索引,那code長度小於nvarchar(32),name長度小於nvarchar(200)比較合適,不要超過255,避免超過索引鍵長度900bytes的限制

字段命名

字段命名試用版不要使用sqlserver關鍵字,此問題雖然和效能無關,但卻是最容易引發bug的因素。如果在開發階段不杜絕這一問題,以後再修改會增加很多**修改等連帶成本。

《軟體開發效能優化系列》之String操作

string是不變類,使用 操作連線字串會導致建立乙個新的字串。如果字串連線次數不是固定的,例如在乙個迴圈操作中,則應該使用stringbuilder類來做字串連線工作。因為stringbuilder內部有乙個stringbuffer,連線字元操作不會每次分配新的字串空間。只有當連線後的字串超出bu...

《軟體開發效能優化系列》之String操作

string是不變類,使用 操作連線字串會導致建立乙個新的字串。如果字串連線次數不是固定的,例如在乙個迴圈操作中,則應該使用stringbuilder類來做字串連線工作。因為stringbuilder內部有乙個stringbuffer,連線字元操作不會每次分配新的字串空間。只有當連線後的字串超出bu...

《軟體開發效能優化系列》之Sql效能優化 一

對於一般簡單查詢,資料庫能自動引數啊以重用計畫快取,如 select from table where id 1 select from table where id 4 在sqlserver內部能自動引數化這個查詢,select from table where id 1 但是一旦sql語句中帶有...