Dalam apl saya (React + Spring Boot + Oracle), berurusan dengan set data yang besar membawa kepada masa pemprosesan yang sangat perlahan. Saya memerlukan penyelesaian untuk mempercepatkan prestasi tanpa menjejaskan ketepatan atau kesempurnaan.
NTILE ialah fungsi tetingkap SQL berkuasa yang direka untuk membahagikan set hasil ke dalam bilangan ketulan yang bersaiz lebih kurang sama, yang dikenali sebagai "jubin." Setiap baris diberikan nombor partition berdasarkan kedudukannya dalam set tersusun.
Dengan menggunakan NTILE, saya membahagikan hasil pertanyaan kepada bahagian yang boleh diurus dan memproses partition ini secara selari. Pendekatan ini membolehkan saya mengambil dan mengendalikan data secara serentak, dengan ketara mengurangkan masa menunggu.
Berikut ialah contoh praktikal cara melaksanakan perkara ini:
WITH PartitionedSales AS ( SELECT sales_id, sales_amount, sales_date, NTILE(2) OVER (ORDER BY sales_id) AS partition_number -- Assigns a partition number (1 or 2) to each row FROM sales WHERE sales_date BETWEEN '2023-01-01' AND '2023-12-31' ) SELECT * FROM PartitionedSales WHERE partition_number = :partitionNumber -- Replace :partitionNumber with the actual partition number (1 or 2)
Dalam coretan SQL di atas:
Di bahagian hadapan, anda boleh menggunakan pemprosesan selari untuk mengambil setiap partition dengan cekap:
async function fetchPartition(partitionNumber) { const response = await fetch('/api/sales?partition=' + partitionNumber}); return response.json(); } async function fetchData() { try { const [partition1, partition2] = await Promise.all([ fetchPartition(1), // Fetch the first partition fetchPartition(2) // Fetch the second partition ]); // Combine and process results const combinedResults = [...partition1, ...partition2]; processResults(combinedResults); } catch (error) { console.error('Error fetching data:', error); } }
Dalam kod ini:
Jika anda ingin meningkatkan prestasi dalam aplikasi berat data anda, cuba kaedah ini. Ini cara yang bijak dan berkesan untuk membuat pertanyaan anda bekerja lebih keras, bukan lagi.
Apabila mengendalikan permintaan serentak, permintaan pada sambungan pangkalan data boleh menjadi ketara. Penggunaan sambungan yang berat ini boleh menjejaskan pangkalan data anda, yang berpotensi membawa kepada kesesakan prestasi. Adalah penting untuk memantau dan mengurus bilangan permintaan serentak untuk memastikan pangkalan data anda kekal responsif dan berfungsi dengan cekap.
Atas ialah kandungan terperinci Pertanyaan SQL Lambat? Tingkatkan Prestasi Apl Anda dengan Teknik Ini. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!