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

मैसकल सेलेक्ट स्पीड में सुधार

मेरा उत्तर यहाँ पढ़ने के लिए समय निकालें:(आपके जैसे ही खंड हैं)

500 मिलियन पंक्तियाँ, 15 मिलियन पंक्ति श्रेणी स्कैन 0.02 सेकंड में।

MySQL और NoSQL:सही चुनने में मेरी मदद करें

फिर अपने टेबल इंजन को इनोडब में निम्नानुसार संशोधित करें:

create table tag_date_value
(
tag_id smallint unsigned not null, -- i prefer ints to chars
tag_date datetime not null, -- can we make this date vs datetime ?
value int unsigned not null default 0, -- or whatever datatype you require
primary key (tag_id, tag_date) -- clustered composite PK
)
engine=innodb;

आप इसके बजाय निम्नलिखित को प्राथमिक कुंजी मान सकते हैं:

primary key (tag_id, tag_date, value) -- added value save some I/O

लेकिन केवल अगर मूल्य कुछ बड़े वर्चर प्रकार नहीं है!

क्वेरी पहले की तरह:

select
 tag_date, 
 value
from
 tag_date_value
where
 tag_id = 1 and
 tag_date between 'x' and 'y'
order by
 tag_date;

आशा है कि यह मदद करता है :)

संपादित करें

ओह उल्लेख करना भूल गया - इंजन प्रकार को mysiam से innodb में बदलने के लिए तालिका में परिवर्तन का उपयोग न करें, बल्कि डेटा को csv फ़ाइलों में डंप करें और एक नई बनाई गई और खाली innodb तालिका में पुनः आयात करें।

ध्यान दें कि मैं निर्यात प्रक्रिया के दौरान डेटा ऑर्डर कर रहा हूं - क्लस्टर इंडेक्स कुंजी हैं!

निर्यात करें

select * into outfile 'tag_dat_value_001.dat' 
fields terminated by '|' optionally enclosed by '"'
lines terminated by '\r\n'
from
 tag_date_value
where
 tag_id between 1 and 50
order by
 tag_id, tag_date;

select * into outfile 'tag_dat_value_002.dat' 
fields terminated by '|' optionally enclosed by '"'
lines terminated by '\r\n'
from
 tag_date_value
where
 tag_id between 51 and 100
order by
 tag_id, tag_date;

-- etc...

आयात करें

तालिका में वापस सही क्रम में आयात करें!

start transaction;

load data infile 'tag_dat_value_001.dat' 
into table tag_date_value
fields terminated by '|' optionally enclosed by '"'
lines terminated by '\r\n'
(
tag_id,
tag_date,
value
);

commit;

-- etc...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. json_encode कुछ भी वापस नहीं कर रहा है

  2. बड़े MySQL InnoDB टेबल्स को बदलना

  3. MySQL प्रदर्शन:MySQL/MariaDB अनुक्रमणिका

  4. ClusterControl के साथ अपने MySQL और MariaDB बैकअप को कैसे अनुकूलित करें

  5. पायथन के साथ वस्तु की सूची में डुप्लिकेट निकालें