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

MySQL स्टेटमेंट को निष्पादित होने में मिनट से अधिक समय लगता है

ध्यान दें, यह MyISAM का उपयोग करने के लिए एक मिनट के लिए सुझाव नहीं दे रहा है। मैं इसका उपयोग केवल अपनी आईडी, न्यूनतम, अधिकतम, और लाइन अप करने के लिए गिनने के लिए करता हूं। तो कृपया इंजन पर ध्यान न दें।

create table ratings
(   id int auto_increment primary key,
    thing int null
)engine=MyISAM;
insert ratings (thing) values (null),(null),(null),(null),(null),(null),(null),(null),(null);
insert ratings (thing) select thing from ratings;
insert ratings (thing) select thing from ratings;
insert ratings (thing) select thing from ratings;
insert ratings (thing) select thing from ratings;
insert ratings (thing) select thing from ratings;
insert ratings (thing) select thing from ratings;
insert ratings (thing) select thing from ratings;
insert ratings (thing) select thing from ratings;
insert ratings (thing) select thing from ratings;
insert ratings (thing) select thing from ratings;

insert ratings (thing) select thing from ratings;
insert ratings (thing) select thing from ratings;
insert ratings (thing) select thing from ratings;
insert ratings (thing) select thing from ratings;
insert ratings (thing) select thing from ratings;
insert ratings (thing) select thing from ratings;
insert ratings (thing) select thing from ratings;

insert ratings (thing) select thing from ratings;
insert ratings (thing) select thing from ratings;

अब मेरे पास 4.7M पंक्तियां हैं

select count(*),min(id),max(id) from ratings;
+----------+---------+---------+
| count(*) | min(id) | max(id) |
+----------+---------+---------+
|  4718592 |       1 | 4718592 |
+----------+---------+---------+
select * from `ratings` order by id limit 499500, 500;
-- 1 second on a dumpy laptop

explain select * from `ratings` order by id limit 499500, 500;
+----+-------------+---------+------+---------------+------+---------+------+---------+----------------+
| id | select_type | table   | type | possible_keys | key  | key_len | ref  | rows    | Extra          |
+----+-------------+---------+------+---------------+------+---------+------+---------+----------------+
|  1 | SIMPLE      | ratings | ALL  | NULL          | NULL | NULL    | NULL | 4718592 | Using filesort |
+----+-------------+---------+------+---------------+------+---------+------+---------+----------------+

explain select * from `ratings` where id>=499501 limit 500;
+----+-------------+---------+-------+---------------+---------+---------+------+---------+-----------------------+
| id | select_type | table   | type  | possible_keys | key     | key_len | ref  | rows    | Extra                 |
+----+-------------+---------+-------+---------------+---------+---------+------+---------+-----------------------+
|  1 | SIMPLE      | ratings | range | PRIMARY       | PRIMARY | 4       | NULL | 4198581 | Using index condition |
+----+-------------+---------+-------+---------------+---------+---------+------+---------+-----------------------+

कहानी का नैतिक जहाँ खंड का उपयोग करना हो सकता है।

गतिरोध की संभावना से इंकार नहीं किया जा सकता।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सम्मिलित करें ... डुप्लीकेट कुंजी पर (कुछ न करें)

  2. MySQL में स्कीमा/डेटाबेस के बीच अंतर

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

  4. स्थानीय परीक्षण के लिए MySQL इंस्टॉलेशन कैसे बनाएं

  5. घातक त्रुटि:न आया हुआ अपवाद 'mysqli_sql_exception' संदेश के साथ 'क्वेरी/तैयार कथन में प्रयुक्त कोई अनुक्रमणिका नहीं'