2012-10-11 15 views
6

मल्टीकॉलम प्राथमिक कुंजी (MySQL) के लिए अधिकतम कॉलम संख्या क्या है? क्या यह कॉलम डेटा प्रकार या इंजन पर निर्भर करता है?MySQL मल्टीकॉलम प्राथमिक कुंजी

किसी 2 कॉलम के साथ एक पी बनाने की कोशिश की और इस त्रुटि प्राप्त:

+0

अपने 16 एसक्यूएल सर्वर 2008 में .. नहीं पता mysql –

+0

[यह लेख 2006 से है] (abt http : //www.xaprb.com/blog/2006/04/17/max-key-length-in-mysql/) और यह प्राथमिक कुंजी के लिए अधिकतम लंबाई कहता है 1000 बाइट्स है। मुझे यकीन नहीं है कि क्या यह बदल गया है। – Taryn

+0

मुझे लगता है कि सीमाएं MyiSAM के लिए 1000 बाइट्स और InnoDB इंजन के लिए 3072 हैं। –

उत्तर

6

हाँ, यह भंडारण इंजन पर निर्भर करता है।

  • MyISAM:

    The maximum number of columns per index is 16. The maximum key length is 1000 bytes. This can also be changed by changing the source and recompiling. For the case of a key longer than 250 bytes, a larger key block size than the default of 1024 bytes is used.

  • InnoDB:

    The InnoDB internal maximum key length is 3500 bytes, but MySQL itself restricts this to 3072 bytes. This limit applies to the length of the combined index key in a multi-column index.

+0

धन्यवाद। बहुत बढ़िया जवाब। –

1

मैं इस पाया
"विनिर्दिष्ट कुंजी बहुत बड़ा था; अधिकतम कुंजी लंबाई 1024 बाइट है" तो यह है कि अधिकतम लग रहा है यह 1024 बाइट्स है, इससे कॉलम संख्या कोई फर्क नहीं पड़ता कि वास्तव में क्या मायने रखता है var प्रकार और स्पेस इसे असाइन करता है।

मैं इस तरह कुछ उदाहरण देखा है:

create table OS_PROPERTYENTRY (entity_name VARCHAR(125) not null, entity_id BIGINT not null, 

entity_key VARCHAR(255) not null date_val DATETIME, primary key (entity_name, entity_id, entity_key)) 

जहां

125 * (3 बाइट्स) + 255 * (3 बाइट्स) + 1 * (8 बाइट्स) = 1148 बाइट्स। इसलिए पीके बनाना संभव नहीं है।

यहाँ एक बार देख ले, वे इस बारे में बात: https://jira.atlassian.com/browse/CONF-2783

संबंधित मुद्दे