PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

वर्चर पर एसक्यूएल इंडेक्सिंग

VARCHAR . पर कुंजियां कॉलम बहुत लंबे हो सकते हैं जिसके परिणामस्वरूप प्रति पृष्ठ कम रिकॉर्ड और अधिक गहराई (B-Tree में अधिक स्तर) ) लंबी अनुक्रमणिका भी कैश मिस अनुपात को बढ़ाती है।

प्रत्येक पूर्णांक के औसत मानचित्र में कितने तार हैं?

यदि अपेक्षाकृत कम हैं, तो आप केवल पूर्णांक कॉलम और PostgreSQL . पर एक अनुक्रमणिका बना सकते हैं रिकॉर्ड पर ठीक फ़िल्टरिंग करेगा:

CREATE INDEX ix_mytable_assoc ON mytable (assoc);

SELECT  floatval
FROM    mytable
WHERE   assoc = givenint
        AND phrase = givenstring

आप स्ट्रिंग हैश पर इंडेक्स बनाने पर भी विचार कर सकते हैं:

CREATE INDEX ix_mytable_md5 ON mytable (DECODE(MD5(phrase), 'HEX'));

SELECT  floatval
FROM    mytable
WHERE   DECODE(MD5(phrase), 'HEX') = DECODE(MD5('givenstring'), 'HEX')
        AND phrase = givenstring -- who knows when do we get a collision?

प्रत्येक हैश केवल 16 है बाइट लंबा है, इसलिए अनुक्रमणिका कुंजियाँ बहुत छोटी होंगी जबकि अभी भी चयनात्मकता लगभग पूरी तरह से संरक्षित हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PgAdmin4 चलाने का प्रयास करने में त्रुटि

  2. PostgreSQL:त्रुटि:ऑपरेटर मौजूद नहीं है:पूर्णांक =वर्ण भिन्न

  3. django.db.utils.ProgrammingError:संबंध bot_trade मौजूद नहीं है

  4. एसक्यूएल ऐरे से स्ट्रिंग्स के ऐरे में परिणाम सेट को कनवर्ट करें

  5. h2 डेटाबेस के साथ यूनिट परीक्षण कैसे करें जहां bpchar का उपयोग किया जाता है?