日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

再议《反驳 吕震宇的“小议数据库主键选取策略(原创)” 》

發(fā)布時(shí)間:2025/6/17 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 再议《反驳 吕震宇的“小议数据库主键选取策略(原创)” 》 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前天發(fā)表了篇文章叫《小議數(shù)據(jù)庫(kù)主鍵選取策略(原創(chuàng))》,隨即有網(wǎng)友提出了反駁意見《反駁 呂震宇的“小議數(shù)據(jù)庫(kù)主鍵選取策略(原創(chuàng))” 》,看到后,我又做了做實(shí)驗(yàn),在這里將實(shí)驗(yàn)結(jié)果以及我的思考再向大家匯報(bào)一下:

首先感謝twodays提出意見,說實(shí)在的,關(guān)于COMB與GUID的效率差異是否有10到30倍我沒有做實(shí)驗(yàn),我會(huì)在以后掌握確切數(shù)據(jù)后修改這個(gè)結(jié)果。twodays的實(shí)驗(yàn)我做了,在我的機(jī)器上(P IV 2.0G,512M DDR400內(nèi)存)實(shí)驗(yàn)結(jié)果如下:

int類型為主鍵的表插入開始時(shí)間:07 19 2004? 8:19PM
int類型為主鍵的表插入結(jié)束時(shí)間:07 19 2004? 8:19PM
int類型為主鍵的表插入共用時(shí)間:5600毫秒
?
GUID(聚簇索引)類型為主鍵的表插入開始時(shí)間:07 19 2004? 8:19PM
GUID類型(聚簇索引)為主鍵的表插入結(jié)束時(shí)間:07 19 2004? 8:19PM
GUID類型(聚簇索引)為主鍵的表插入共用時(shí)間:6030毫秒?
?
GUID(非聚簇索引)類型為主鍵的表插入開始時(shí)間:07 19 2004? 8:19PM
GUID類型(非聚簇索引)為主鍵的表插入結(jié)束時(shí)間:07 19 2004? 8:19PM
GUID類型(非聚簇索引)為主鍵的表插入共用時(shí)間:5746毫秒?
?
COMB類型為主鍵的表插入開始時(shí)間:07 19 2004? 8:19PM
COMB類型為主鍵的表插入結(jié)束時(shí)間:07 19 2004? 8:19PM
COMB類型為主鍵的表插入共用時(shí)間:6066毫秒

從中看到似乎COMB是最慢的。但是這又有多少是因?yàn)橛?jì)算COMB數(shù)據(jù)而造成的呢?

SET?@aGuid?=?CAST(CAST(NEWID()?AS?BINARY(10))?+?CAST(GETDATE()?AS?BINARY(6))?AS?UNIQUEIDENTIFIER)

而且,作為聚簇索引與非聚簇索引的概念,我想僅僅MSDN中的一段話是不足以說明問題的。我想從以下幾個(gè)方面重新論述一下:

一、主鍵的作用:

“反駁”中有這樣兩句話:“采用非聚簇索引也有不方便的地方,那就是不能排序了”,“如果只是為了需要一個(gè)唯一標(biāo)示符來做為主鍵,并且在這個(gè)字段上不需要做什么排序呀,范圍對(duì)比等操作的話,那么我們可以放心大膽的使用GUID來做為主鍵”。那么主鍵的作用是什么呢?我認(rèn)為主鍵有這么幾個(gè)作用:


  • 實(shí)現(xiàn)實(shí)體完整性約束,確保不會(huì)出現(xiàn)重復(fù);
  • 在參照完整性中充當(dāng)被參照對(duì)象,需要與外鍵進(jìn)行連接,當(dāng)然從優(yōu)化角度出發(fā)也需要排序了;
  • 在編程建立業(yè)務(wù)實(shí)體對(duì)象時(shí),是一個(gè)很好的檢索出發(fā)點(diǎn);
  • 在刪除、更新操作時(shí)可以出現(xiàn)在WHERE短語(yǔ)中表示操作的對(duì)象(顯然又會(huì)進(jìn)行檢索)。

所以,主鍵一個(gè)必不可少的功能就是排序,提高檢索效率。不過我認(rèn)為“反駁”中有一點(diǎn)搞錯(cuò)了,那就是在排序問題上,實(shí)際上非聚簇索引主鍵在排序上不輸給聚簇索引主鍵多少(這一點(diǎn)請(qǐng)看論述二)。


二、聚簇索引與非聚簇索引的本質(zhì)區(qū)別是什么

因?yàn)椤胺瘩g”中僅僅做了插入實(shí)驗(yàn),所以我認(rèn)為不足以說明問題。很多人并沒有真正了解聚簇索引與非聚簇索引的本質(zhì)區(qū)別,以至于對(duì)實(shí)驗(yàn)結(jié)果產(chǎn)生誤解。為此我新寫了一篇文章《聚簇索引與非聚簇索引的區(qū)別以及SQL Server查詢優(yōu)化技術(shù)》,在這里詳細(xì)進(jìn)行了論述,看完后,很多事情也就不言自明了。


三、應(yīng)當(dāng)如何設(shè)計(jì)實(shí)驗(yàn)檢測(cè)COMB與GUID的效率問題

設(shè)計(jì)一個(gè)實(shí)驗(yàn)應(yīng)當(dāng)能夠準(zhǔn)確衡量被測(cè)試的內(nèi)容,盡可能少的減少其它因素帶來的偏差。我認(rèn)為“反駁”中的實(shí)驗(yàn)僅僅測(cè)試了插入性能,而且沒有把計(jì)算COMB的造成的性能損失因素排除在外,另外主鍵與外鍵連接時(shí)的性能沒有測(cè)試,排序性能也沒有測(cè)試。昨天晚上我重新設(shè)計(jì)了實(shí)驗(yàn),并得到了新的實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)過程以及實(shí)驗(yàn)結(jié)果會(huì)隨后公布(這兩天正在忙競(jìng)聘)。


轉(zhuǎn)載于:https://www.cnblogs.com/zhenyulu/archive/2004/07/20/25816.html

總結(jié)

以上是生活随笔為你收集整理的再议《反驳 吕震宇的“小议数据库主键选取策略(原创)” 》的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。