1. Latar belakang masalah: Halaman hadapan memaparkan data dalam jadual dan menyokong pengeksportan data ke fail EXCEL. Menyoal pangkalan data kadangkala sangat perlahan (contohnya, julat masa adalah besar [2 tahun], dan masa pelaksanaan pernyataan SQL hampir 220s)
Secara amnya, adakah perlu menanya semula pangkalan data untuk data yang dieksport, atau bolehkah data yang diperolehi dari bahagian hadapan dihantar terus ke PHPExcel untuk diproses
Terima kasih kepada semua yang menjawab.
PS: Saya telah mencuba yang terbaik untuk mengoptimumkan pernyataan SQL (pembahagian indeks telah dilakukan untuk berbilang jadual dan 3 juta keping data jadual Jika masa pelaksanaan pertanyaan adalah kira-kira 1.6s seminggu, ia akan mengambil masa beberapa minit). untuk menyemak bilangan tahun.
jadual html boleh dieksport terus ke xlsx;
Jika 1 tidak digunakan, data yang diperoleh akan dicache sebelum bahagian hadapan memaparkan data, dan ia boleh dihantar semula ke bahagian belakang apabila mengeksport tanpa memerlukan operasi pangkalan data lain
2 ialah jumlah data berada dalam julat komunikasi hadapan dan belakang yang boleh diterima (contohnya, jika melebihi 50MB, ia terlalu besar), dan penggunaan komunikasi dikorbankan untuk penggunaan pangkalan data.
Malah, js mempunyai pemalam yang boleh memproses excel, tetapi tidakkah anda masih mendapat data di bahagian hadapan dari bahagian belakang
Pemalam JS excel, Baidu mempunyai banyak daripadanya, seperti exceljs
Sesetengah perisian pengurusan mysql, seperti navicat, boleh terus mengeksport pangkalan data untuk cemerlang Anda tidak perlu menggunakan PHP untuk mengeksport Walaupun saya boleh mencapai segala-galanya dengan bahasa terbaik di dunia, anda juga harus mempertimbangkan bahawa perkara lain boleh juga dapat dicapai
Secara peribadi, saya tidak menyokong pengambilan semula data ke latar belakang Anda boleh terus mengeksport html ke excel seperti yang ditunjukkan di atas, anda boleh memprosesnya di latar belakang, tetapi apabila anda memaparkan data dalam html, cache data ke pelayan Jika anda mengeksport excel, Baca data terus dari kawasan cache dan kemudian keluarkannya ke excel
Secara amnya, mengeksport data ke EXCEL ialah operasi bahagian belakang Di sini pengguna akan memilih syarat tertentu untuk mengeksport data. Jika bahagian belakang memakan masa, ia boleh diproses menggunakan tugas tak segerak.
Tanya soalan, saya ingin tahu sama ada mengeksport data bermakna mengeksport semua data? Atau bolehkah saya memilih julat masa? Jika anda mengeksport segala-galanya, anda boleh menjalankan tugas berjadual di latar belakang Pilih masa apabila bilangan pelanggan adalah kecil, seperti pergi ke latar belakang pada waktu malam untuk menyemak semua data, dan kemudian dapatkannya apabila mengeksport dalam. tempoh sebelumnya. Tugas yang dijadualkan juga akan menyemak data secara berkala setiap hari