अगर मैं सही ढंग से समझूं, तो आप अपने प्राथमिक कॉलम में यूयूआईडी का उपयोग कर रहे हैं? लोग कहेंगे कि एक नियमित (पूर्णांक) प्राथमिक कुंजी तेज होगी, लेकिन MySQL के अंधेरे पक्ष का उपयोग करने का एक और तरीका है। वास्तव में, जब अनुक्रमणिका की आवश्यकता होती है, तो MySQL किसी अन्य चीज़ की तुलना में बाइनरी का उपयोग अधिक तेज़ करता है।
चूंकि यूयूआईडी 128 बिट्स है और इसे हेक्साडेसिमल के रूप में लिखा गया है, इसलिए यूयूआईडी को तेज करना और स्टोर करना बहुत आसान है।
सबसे पहले, अपनी प्रोग्रामिंग भाषा में डैश हटा दें
110E8400-E29B-11D4-A716-446655440000
से करने के लिए 110E8400E29B11D4A716446655440000
।
अब इसमें 32 वर्ण हैं (जैसे MD5 हैश, जिसके साथ यह भी काम करता है)।
चूंकि एक BINARY
MySQL में आकार में 8 बिट है, BINARY(16)
एक यूयूआईडी (8*16 =128) का आकार है।
आप इसका उपयोग करके सम्मिलित कर सकते हैं:
INSERT INTO Table (FieldBin) VALUES (UNHEX("110E8400E29B11D4A716446655440000"))
और क्वेरी का उपयोग कर:
SELECT HEX(FieldBin) AS FieldBin FROM Table
अब अपनी प्रोग्रामिंग भाषा में, अपने मूल UUID से मिलान करने के लिए 9, 14, 19 और 24 की स्थिति में डैश को फिर से डालें। यदि स्थितियां हमेशा भिन्न होती हैं, तो आप उस जानकारी को दूसरे क्षेत्र में संग्रहीत कर सकते हैं।
पूरा उदाहरण :
CREATE TABLE `test_table` (
`field_binary` BINARY( 16 ) NULL ,
PRIMARY KEY ( `field_binary` )
) ENGINE = INNODB ;
INSERT INTO `test_table` (
`field_binary`
)
VALUES (
UNHEX( '110E8400E29B11D4A716446655440000' )
);
SELECT HEX(field_binary) AS field_binary FROM `test_table`
यदि आप किसी भी हेक्स स्ट्रिंग के साथ इस तकनीक का उपयोग करना चाहते हैं, तो हमेशा length / 2
. करें क्षेत्र की लंबाई के लिए। तो sha512 के लिए, फ़ील्ड होगा BINARY (64)
चूंकि sha512 एन्कोडिंग 128 वर्ण लंबा है।