如果某表經常出現死鎖,那就要做對象職責分離,就是把插入、更新、刪除等分離;
在設計或創建表的時候,我們往往會把 Id字段設置為聚集索引,但是我們這樣的習慣可能不是最優的,因為聚集索引和非聚集索引的區別就是一個是物理存儲的,所以在查詢的時候如果使用聚集索引的話,可能會比非聚集索引要開,因為關系到數據頁的分布,因此我們有時可以根據我們的需要來設置聚集索引,比如待辦待閱一般都是按照時間來倒排的,那我們可以讓日期字段來做聚集索引;
當表的數據量比較大,而且一些基本的優化也不能滿足到需求,那就可以考慮:縱向、橫向分割表,減少表的尺寸(sp_spaceuse);
表字段如果不為空的,就不應該設置允許空,第一:這裡可以確保數據的完整性;第二:依稀記得跟性能有關,但是記不起,歡迎補充;
在表中設計索引屬性的時候,我們都會看到填充因子,通常情況下我們都是不去理會它的,如果我們去了解它,也許我們會有不錯的回報。(以下是個人言論,有可能存在BUG,不久將來會進一步確認是否正確。)
填充因子的意思就是當數據頁的數據達到多少百分比的時候就換頁,相當以在數據頁中預留多少空間來應對數據的增長,比如聚集索引,如果我們選擇了100%或者0%,意思就是我們要把整個數據頁都填充完整;
如果該表有一個以ID自增為聚集索引,而且我們設置的這個比值比較小,就會有可能造成比較多的磁盤碎片,查詢時的IO消耗比較大,這是因為聚集索引在數據頁的表現是物理存儲,索引每個數據頁都會留下比較多的數據頁空間,而且是永遠都不會給使用到的;
只有當索引被創建或者是重建時才會重新設置數據頁的百分比分布,當做插入數據後,改數據頁的比例就會小於這個百分比了;