IN dalam MySQL ialah operator yang sangat biasa digunakan, yang boleh digunakan untuk menapis data yang memenuhi syarat tertentu, seperti:
PILIH * DARI contoh_jadual DI MANA id IN (1, 2, 3);
Pernyataan SQL ini akan mengembalikan baris dengan ID 1, 2 dan 3 dalam jadual example_table. Apabila jumlah data adalah kecil, kecekapan IN adalah sangat tinggi, tetapi apabila jumlah data menjadi sangat besar, kecekapan IN akan berkurangan dengan ketara. Artikel ini akan menerangkan masalah dan penyelesaian kaedah pertanyaan IN apabila jumlah data adalah sangat besar daripada tiga aspek berikut.
1. Bilakah kecekapan penggunaan IN akan berkurangan?
Apabila terdapat sejumlah besar elemen mengikuti IN, kecekapan pertanyaan akan berkurangan dengan ketara. Sebabnya ialah MySQL perlu menukar semua elemen yang mengikuti IN ke dalam jadual sementara, dan kemudian melakukan operasi JOIN dengan jadual yang ditanya. Apabila bilangan elemen yang mengikuti IN adalah besar, saiz jadual sementara akan menjadi sangat besar, mengakibatkan pengurangan kecekapan pertanyaan.
Apabila bilangan elemen selepas IN adalah besar, MySQL boleh memilih untuk tidak menggunakan indeks dan menggunakan imbasan jadual penuh untuk query , yang akan mengurangkan kecekapan pertanyaan dengan ketara.
Apabila bilangan elemen yang mengikuti IN adalah besar, MySQL akan menyimpan hasil dalam cakera dan kemudian mengisih fail Ini Kaedah ini juga akan mengurangkan kecekapan pertanyaan.
2. Bagaimana untuk mengoptimumkan pertanyaan menggunakan IN?
Apabila set hasil yang dikembalikan dalam pertanyaan IN adalah besar, kami boleh mempertimbangkan untuk menggunakan pernyataan LIMIT untuk mengehadkan set hasil kepada julat yang sesuai mengelakkan kecekapan pertanyaan yang rendah.
Pisah set data besar kepada beberapa set data kecil, dan kemudian gunakan pernyataan UNION untuk melaksanakan pertanyaan gabungan.
Apabila set hasil yang dikembalikan dalam pertanyaan IN adalah besar, kami boleh mempertimbangkan untuk menggunakan pertanyaan paging untuk pengoptimuman, yang membolehkan kami mengoptimumkan semasa proses pertanyaan Hanya data yang diperlukan dikembalikan.
Apabila terdapat sangat sedikit elemen dalam pertanyaan IN, kami boleh mempertimbangkan untuk menggunakan operator EXISTS dan bukannya operator IN untuk membuat pertanyaan, yang boleh meningkatkan dengan berkesan kecekapan pertanyaan.
Apabila pertanyaan IN kerap digunakan, kami boleh mempertimbangkan untuk menyimpannya, yang boleh mengurangkan bilangan pertanyaan berulang dan dengan itu meningkatkan kecekapan pertanyaan .
3. Ringkasan
Pertanyaan IN ialah pengendali yang sangat biasa digunakan yang boleh membantu kami menapis data yang memenuhi syarat dengan cepat. Walau bagaimanapun, apabila jumlah data sangat besar, kecekapan pertanyaan IN akan berkurangan dengan ketara dan kami perlu mengoptimumkannya melalui beberapa kaedah pengoptimuman. Kami boleh meningkatkan kecekapan pertanyaan IN dengan menggunakan pernyataan LIMIT, pernyataan UNION, pertanyaan paging, menggunakan operator EXISTS, data caching, dsb.
Atas ialah kandungan terperinci Bagaimana untuk mengoptimumkan pernyataan pertanyaan IN dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!