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

क्या अद्वितीय अनुक्रमणिका स्तंभ खोज प्रदर्शन के लिए बेहतर हैं? (पीजीएसक्यूएल और माईएसक्यूएल)

यदि आपका डेटा अद्वितीय है, तो आपको एक UNIQUE बनाना चाहिए उन पर अनुक्रमणिका।

इसका मतलब है कि कोई अतिरिक्त ओवरहेड नहीं है और कुछ मामलों में अनुकूलक के निर्णयों को प्रभावित करता है ताकि वह एक बेहतर एल्गोरिदम चुन सके।

SQL Server में और PostgreSQL . में , उदाहरण के लिए, यदि आप UNIQUE . पर सॉर्ट करते हैं कुंजी, अनुकूलक ORDER BY को अनदेखा करता है उसके बाद प्रयुक्त उपवाक्य (चूंकि वे अप्रासंगिक हैं), i. इ। यह प्रश्न:

SELECT  *
FROM    mytable
ORDER BY
        col_unique, other_col
LIMIT 10

col_unique . पर एक अनुक्रमणिका का उपयोग करेगा और other_col . पर क्रमित नहीं होगा क्योंकि यह बेकार है।

यह प्रश्न:

SELECT  *
FROM    mytable
WHERE   mycol IN
        (
        SELECT  othercol
        FROM    othertable
        )

एक INNER JOIN . में भी बदल दिया जाएगा (SEMI JOIN के विपरीत) ) अगर कोई UNIQUE है othertable.othercol . पर अनुक्रमणिका ।

अनुक्रमणिका में हमेशा पंक्ति के लिए किसी प्रकार का सूचक होता है (ctid में PostgreSQL , पंक्ति सूचक MyISAM . में , प्राथमिक कुंजी/अद्वितीय InnoDB . में ) और इन पॉइंटर्स पर पत्तियों का आदेश दिया जाता है, इसलिए वास्तव में प्रत्येक इंडेक्स लीफ अद्वितीय है (हालांकि यह स्पष्ट नहीं हो सकता है)।

प्रदर्शन विवरण के लिए मेरे ब्लॉग में यह लेख देखें:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. शीर्ष सामान्य MySQL प्रश्न

  2. MySQL त्रुटि:#1142 - चयन आदेश उपयोगकर्ता को अस्वीकार कर दिया गया

  3. रेल ActiveRecord एक आईडी कॉलम को संभालता है जो प्राथमिक कुंजी नहीं है

  4. MySQL अनुक्रमणिका दक्षता में सुधार - एकाधिक अनुक्रमणिका में कॉलम?

  5. डीबी में एक मैसेजिंग सिस्टम बनाना (विशेष रूप से MySQL)