但是,具有identity特性的字段,不需要具有唯一性,更不必須是主鍵。
可以通過,set identity_insert tablename (on|off),在運行時控制,是否可以在identity字段中指定值,而不是由系統自動的插入值。
那么,這有什么用處呢。舉個例子來說,兩個用戶之間的聊天,可以有多次,這個用一個chatsession來表示。在數據庫中,我們需要三個表: user, chatsession(sessionid identity,...), user_chatsession (userid, sessionid, ...), 來表示這個關系。這里面,多出了一個表chatsession, 其主鍵sessionid具有identity特性,并且在user_chatsession中被引用。
但是,我們知道,數據庫寫操作比讀操作的開銷要大很多,如果我想做優化,把chatsession整個的去掉,那應該怎么做呢.
這時,就會用到我說的這一點。首先把 user_chatsession 中的sesssionid變成identity 字段,在插入一個session中的第一個 user-session (for user a)記錄時,讓系統產生sessionid, 然后記錄下這個sessionid, 在插入一個session中后續的 user-session (for user b, user c...), 執行set identity_insert tablename on,就可以把先前記錄的sessionid值插入。
還有另外一個方法,比較笨一點,就是用 select max(sessionid) + 1 from table where userid = @useridA,來獲得要新插入的sessionid, 這種方法性能上顯然差了許多。
數據庫中identity字段不必是系統產生的唯一值 性能優化方法(新招)
2019-12-06 14:35MSSQL教程網 Sql Server
具有identity特性的字段,其值是系統產生的,自動增加的,所以,一般把這個用在一個表的主鍵上。
延伸 · 閱讀
- 2022-03-10Mongodb數據庫轉換為表格文件的庫
- 2022-03-10C/C++ Qt 數據庫與TreeView組件綁定詳解
- 2022-03-09MySQL數據庫如何給表設置約束詳解
- 2022-03-09MySQL數據庫觸發器從小白到精通
- 2022-03-09Linux中無法遠程連接數據庫問題的解決方法
- 2022-03-09React函數式組件的性能優化思路詳解
- Sql Server
SQLServer 數據庫的數據匯總完全解析(WITH ROLLUP)
乍一看,好像很容易,用group by好像能實現?但仔細研究下去,你又會覺得group by也是無能為力,總欠缺點什么,無從下手。那么,到底該如何做呢?別急,...
- Sql Server
SQLServer2005創建定時作業任務
這篇文章主要為大家介紹了SQLServer2005創建定時作業任務的詳細過程,具有一定的參考價值,感興趣的小伙伴們可以參考一下 ...
- Sql Server
SQL JOIN 連接詳細介紹及簡單使用實例
這篇文章主要介紹了SQL JOIN 連接詳細介紹及簡單使用實例的相關資料,需要的朋友可以參考下 ...
- Sql Server
深入SQLServer中ISNULL與NULLIF的使用詳解
本篇文章是對SQLServer中ISNULL與NULLIF的使用進行了詳細分析介紹,需要的朋友參考下 ...
- Sql Server
SQL2005 存儲過程解密方法
SQL2005 存儲過程解密方法,需要的朋友可以參考下。...
- Sql Server
SQL_Server全文索引的用法解析
SQL Server全文索引相信大家都有一定的了解,下面就為您介紹SQL Server全文索引的用法及相關的語句,希望可以讓您對SQL Server全文索引能有更深的認識 ...
- Sql Server
SQLServer2005 批量查詢自定義對象腳本
SQLServer2005 批量查詢自定義對象腳本,使用系統函數object_definition和系統表 sysobjects 就可以了 ...
- Sql Server
三種SQL分頁查詢的存儲過程代碼
三種SQL分頁查詢的存儲過程代碼,需要的朋友可以參考下。 ...