मेरे पास 1.4 बिलियन रिकॉर्ड के साथ एक तालिका है। तालिका संरचना इस प्रकार है:
CREATE TABLE text_page (
text VARCHAR(255),
page_id INT UNSIGNED
) ENGINE=MYISAM DEFAULT CHARSET=ascii
आवश्यकता स्तंभ पर एक सूचकांक बनाने के लिए है text
।
तालिका का आकार लगभग 34G है।
मैंने निम्नलिखित कथन द्वारा सूचकांक बनाने की कोशिश की है:
ALTER TABLE text_page ADD KEY ix_text (text)
10 घंटे के इंतजार के बाद आखिरकार मैंने इस दृष्टिकोण को छोड़ दिया।
क्या इस समस्या का कोई हल है?
अद्यतन : तालिका को अद्यतन या सम्मिलित या हटाए जाने की संभावना नहीं है। स्तंभ पर सूचकांक बनाने text
का कारण यह है क्योंकि इस तरह की sql क्वेरी को अक्सर निष्पादित किया जाएगा:
SELECT page_id FROM text_page WHERE text = ?
अद्यतन : मैंने तालिका को विभाजित करके समस्या को हल किया है।
स्तंभ पर तालिका को 40 टुकड़ों में विभाजित किया गया है text
। तब तालिका पर सूचकांक बनाने में लगभग 1 घंटे लगते हैं।
ऐसा लगता है कि तालिका आकार बहुत बड़ा हो जाने पर MySQL सूचकांक निर्माण बहुत धीमा हो जाता है। और विभाजन तालिका को छोटे चड्डी में कम कर देता है।
CREATE INDEX
कथन का उपयोग करने में क्या गलत है ?