Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengoptimumkan Masa Pelaksanaan Pertanyaan MySQL untuk Set Data Besar?

Bagaimana untuk Mengoptimumkan Masa Pelaksanaan Pertanyaan MySQL untuk Set Data Besar?

Susan Sarandon
Lepaskan: 2024-11-26 01:38:11
asal
812 orang telah melayarinya

How to Optimize MySQL Query Execution Time for Large Datasets?

Pengoptimuman Masa Pelaksanaan Pertanyaan MySQL

Apabila bekerja dengan pangkalan data yang besar, masa pelaksanaan pertanyaan menjadi faktor penting. Dalam satu senario sedemikian, pangkalan data tapak web dengan 1 juta rekod menghadapi masa pelaksanaan yang berlebihan untuk pertanyaan. Satu contoh pertanyaan, yang dibentangkan di bawah, menunjukkan isu ini:

select * from `ratings` order by id limit 499500, 500
Salin selepas log masuk

Walaupun percaya bahawa pengendalian 1 juta rekod dalam jadual MySQL tidak sepatutnya menimbulkan masalah, pertanyaan ini secara konsisten mengambil masa lebih seminit untuk dilaksanakan. Penambahan indeks pada lajur id gagal mengurangkan isu ini.

Walau bagaimanapun, setelah meneliti rancangan EXPLAIN untuk pertanyaan ini, didapati bahawa pertanyaan itu menggunakan pendekatan imbasan jadual penuh:

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 |
+----+-------------+---------+------+---------------+------+---------+------+---------+----------------+
Salin selepas log masuk

Untuk menangani isu ini, adalah dicadangkan klausa tempat digunakan untuk mengecilkan kriteria carian. Apabila klausa tempat ditambahkan, pelan pertanyaan berubah:

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 |
+----+-------------+---------+-------+---------------+---------+---------+------+---------+-----------------------+
Salin selepas log masuk

Perubahan ini menyebabkan pertanyaan menggunakan pendekatan keadaan indeks, meningkatkan masa pelaksanaannya dengan ketara.

Selain itu, kemungkinan kebuntuan dalam proses pelaksanaan pertanyaan tidak dapat diketepikan. Untuk mendiagnosis kebuntuan, arahan SHOW INNODB STATUS mungkin berguna.

Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Masa Pelaksanaan Pertanyaan MySQL untuk Set Data Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan