一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - 數據庫中identity字段不必是系統產生的唯一值 性能優化方法(新招)

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

2019-12-06 14:35MSSQL教程網 Sql Server

具有identity特性的字段,其值是系統產生的,自動增加的,所以,一般把這個用在一個表的主鍵上。

但是,具有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, 這種方法性能上顯然差了許多。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品视频在线播放 | 欧美日韩国产中文字幕 | 色婷婷激婷婷深爱五月老司机 | a优女网| 欧美成人免费tv在线播放 | 国内揄拍国内精品久久 | 九九九九九九精品免费 | 四虎永久免费地址 | 掰开逼操 | 黑人巨大vs北条麻妃在线 | 亚洲啊v| 国内精品久久久久久中文字幕 | 日韩在线第一区 | 日本老妇乱子伦中文视频 | 亚洲AV无码乱码国产麻豆穿越 | 欧美精品1区2区 | 成人性生交大片免费看软件 | 欧美福利二区 | 日本免费全黄一级裸片视频 | 99精品视频免费 | 国产一区二区三区丶四区 | 91国内精品久久久久影院优播 | 闺蜜的样子小说安沁在线阅读 | 亚洲高清无在码在线电影 | 欧美vpswindowssex| 成人啪啪漫画全文阅读 | 欧美折磨另类系列sm | 91制片厂(果冻传媒)原档破解 | 国产乱子伦一区二区三区 | 国产午夜精品久久久久小说 | bt天堂在线最新版在线 | 美女被躁了在线观看视频 | 日本又黄又裸一级大黄裸片 | 免费观看欧美成人禁片 | 日韩欧美精品一区二区 | 日韩成人免费 | 精品无码久久久久久久动漫 | 女bbbbxxx孕妇 | 亚洲免费视频一区 | 91最新国产| 欧美一区二区三区免费观看视频 |