国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

數據庫中identity字段不必是系統產生的唯一值 性能優化方法(新招)

2024-08-31 00:58:18
字體:
來源:轉載
供稿:網友
但是,具有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, 這種方法性能上顯然差了許多。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 呼伦贝尔市| 栖霞市| 咸宁市| 福鼎市| 苍山县| 盐源县| 汉中市| 高州市| 高邑县| 独山县| 甘德县| 仙游县| 合肥市| 武义县| 绥棱县| 集贤县| 大埔区| 都兰县| 新泰市| 呼和浩特市| 宣城市| 通江县| 庄河市| 千阳县| 柳河县| 广灵县| 宜兰市| 铅山县| 甘谷县| 新沂市| 红桥区| 朝阳市| 余姚市| 丽水市| 宁海县| 伊吾县| 故城县| 大邑县| 澎湖县| 抚远县| 莒南县|