में प्राथमिक कुंजी के रूप में एक int पहचान का उपयोग करते हैं। मेरे पास फ़ाइल से निपटने के लिए एक एप्लिकेशन है और इसे कई सेगमेंट में विभाजित करने के लिए एक एप्लीकेशन है, फिर परिणाम को SQL सर्वर में सहेजें डेटाबेस। कई डुप्लिकेट फ़ाइल (शायद अलग-अलग फ़ाइल पथ के साथ) हैं, इसलिए पहले मैं इन सभी फ़ाइलों के माध्यम से जाता हूं और प्रत्येक फ़ाइल के लिए एमडी 5 हैश की गणना करता हूं, और [डुप्लिकेट] कॉलम का उपयोग करके डुप्लिकेट फ़ाइल को चिह्नित करता हूं।प्राथमिक कुंजी बनाम एमडी 5 हैश का उपयोग करने के पेशेवरों और विपक्ष एसक्यूएल सर्वर
फिर हर रोज, मैं इस एप्लिकेशन को चलाऊंगा और परिणामों को [परिणाम] तालिका में सहेज दूंगा। डाटाबेस स्कीमा के रूप में नीचे है:
CREATE TABLE [dbo].[FilePath]
(
[FilePath] NVARCHAR(256) NOT NULL PRIMARY KEY,
[FileMd5Hash] binay(16) NOT NULL,
[Duplicated] BIT NOT NULL DEFAULT 0,
[LastRunBuild] NVARCHAR(30) NOT NULL DEFAULT 0
)
CREATE TABLE [dbo].[Result]
(
[Build] NVARCHAR(30) NOT NULL,
[FileMd5Hash] binay(16) NOT NULL ,
[SegmentId] INT NOT NULL,
[SegmentContent] text NOT NULL
PRIMARY KEY ([FileMd5Hash], [Build], [SegmentId])
)
और मैं FileMd5Hash पर इन 2 तालिका में शामिल होने के लिए एक आवश्यकता है।
के बाद से की [परिणाम] बहुत बड़ी है पंक्तियों की संख्या, मैं नीचे के रूप में तालिकाओं के लिए इन में शामिल होने का पूर्णांक पहचान स्तंभ जोड़ना चाहते हैं:
CREATE TABLE [dbo].[FilePath]
(
[FilePath] NVARCHAR(256) NOT NULL PRIMARY KEY,
[FileMd5Hash] binay(16) NOT NULL,
**[Id] INT NOT NULL IDENTITY,**
[Duplicated] BIT NOT NULL DEFAULT 0,
[LastRunBuild] NVARCHAR(30) NOT NULL DEFAULT 0
)
CREATE TABLE [dbo].[Result]
(
[Build] NVARCHAR(30) NOT NULL,
**[Id] INT NOT NULL,**
[SegmentId] INT NOT NULL,
[SegmentContent] text NOT NULL
PRIMARY KEY ([FileMd5Hash], [Build], [SegmentId])
)
तो पक्ष और विपक्ष की क्या है इन 2 तरीकों से?
http://databases.aspfaq.com/database/what-should-i-choose-for-my-primary-key.html
MD5 हैश का उपयोग करते हुए अपने प्राथमिक कुंजी के लिए एक GUID का उपयोग कर तरह होगा:
कृपया ध्यान दें कि MD5 एल्गोरिदम पूरी तरह से अलग डेटा के लिए डुप्लिकेट मान उत्पन्न कर सकता है।विकिपीडिया की जांच करें, इसमें अधिक जानकारी है। मुझे लगता है कि 'int' आईडी का उपयोग करना बेहतर है, क्योंकि इसे अधिक कुशलता से अनुक्रमित किया जाएगा – cha
यह समझने के लिए यहां पर्याप्त जानकारी नहीं है कि आप क्या करने का प्रयास कर रहे हैं और आपको पहचान कॉलम की आवश्यकता क्यों हो सकती है। – usr