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

क्या क्रॉस-टेबल इंडेक्सिंग संभव है?

जैसा कि आप जानते हैं, SQLServer इसे अनुक्रमित दृश्य के साथ प्राप्त करता है :

SQLServer में, इस तकनीक का लाभ उठाने के लिए, आपको टेबल पर नहीं बल्कि व्यू पर क्वेरी करनी चाहिए। इसका मतलब है कि आपको व्यू और इंडेक्स के बारे में पता होना चाहिए।

MySQL में अनुक्रमित दृश्य नहीं हैं, लेकिन आप तालिका + ट्रिगर + अनुक्रमणिका के साथ व्यवहार का अनुकरण कर सकते हैं

एक दृश्य बनाने के बजाय, आपको डेटा तालिका को अद्यतित रखने के लिए एक अनुक्रमित तालिका, एक ट्रिगर बनाना होगा, और फिर आपको अपनी सामान्यीकृत तालिकाओं के बजाय अपनी नई तालिका को क्वेरी करनी होगी।

आपको मूल्यांकन करना चाहिए कि क्या लेखन कार्यों का ऊपरी भाग पठन संचालन में सुधार को ऑफसेट करता है।

संपादित:

ध्यान दें कि हमेशा एक नई तालिका बनाना आवश्यक नहीं है। उदाहरण के लिए, 1:N संबंध (मास्टर-विवरण) ट्रिगर में, आप 'मास्टर' तालिका से फ़ील्ड की एक प्रति 'विवरण' तालिका में रख सकते हैं। आपके मामले में:

CREATE TABLE tableOne (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    tableTwoId INT UNSIGNED NOT NULL,
    objectId INT UNSIGNED NOT NULL,
    desnormalized_eventTime DATETIME NOT NULL,
    INDEX (objectID),
    FOREIGN KEY (tableTwoId) REFERENCES tableTwo (id)
) ENGINE=InnoDB;

CREATE TRIGGER tableOne_desnormalized_eventTime
   BEFORE INSERT ON tableOne
for each row
begin
  DECLARE eventTime DATETIME;
  SET eventTime = 
      (select eventTime 
       from tableOne
       where tableOne.id = NEW.tableTwoId);
  NEW.desnormalized_eventTime = eventTime;
end;

ध्यान दें कि यह डालने से पहले ट्रिगर है।

अब, क्वेरी को इस प्रकार फिर से लिखा गया है:

select * from tableOne t1 
  inner join tableTwo t2 on t1.tableTwoId = t2.id
  where t1.objectId = '..'
  order by t1.desnormalized_eventTime;

अस्वीकरण:परीक्षण नहीं किया गया।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Informix के साथ हाइबरनेट क्वेरी समस्या

  2. MySQL में MID () फ़ंक्शन कैसे काम करता है

  3. MySQL FIND_IN_SET () अपेक्षानुसार काम नहीं कर रहा है

  4. HAProxy:सभी कई तरह के संसाधन

  5. सी # MySQL उपयोगकर्ता बनाएं