Laravel-datatables: Pemuatan data sangat lambat untuk sejumlah besar baris.

Dibuat pada 8 Mar 2017  ·  14Komentar  ·  Sumber: yajra/laravel-datatables

Ringkasan masalah atau permintaan fitur


Saya mencoba mengimplementasikan Datatable dengan Laravel tetapi saya memiliki masalah ketika tabel saya memiliki banyak baris karena Datatable mendapatkan SEMUA dalam satu permintaan dan kemudian pagination ada di sisi JS. Bisakah saya menggunakan pagination Laravel atau dapatkah saya mengembalikan baris yang diberi halaman dengan metode paginate() dari Eloquent pada metode ajax? Karena ini adalah masalah besar untuk proyek saya. Pemuatan data sangat lambat. Ketika saya mencari beberapa pengolah kata juga sangat lambat dan setelah beberapa operasi seperti sort , search dll. Halaman membeku dan tidak ada yang terjadi.
Saya berharap bahwa seseorang memiliki masalah yang sama seperti ini.

Cuplikan kode masalah

                serverSide: true,
                processing: true,
                render: true,
                columns: [
                    {data: 'code'},
                    {data: 'name', "defaultContent": "<i>Not set</i>"},
                    {data: 'native_name',  "defaultContent": "<i>Not set</i>"},
                    {data: 'action'}
                ],
                ajax: '{!! route('dt-languages') !!}'

Detail sistem

  • Sistem Operasi Linux
  • PHP Versi 7.0.4
  • Laravel Versi 5.4
  • Laravel-Datatables Versi 7.2

Komentar yang paling membantu

Anda harus menghapus get to use query builder.

return $this->languages->select('languages.*');

Semua 14 komentar

Anda mungkin menggunakan koleksi alih-alih kueri? Bisakah Anda menempelkan kode sisi server Anda? Terima kasih!

Saya menggunakan pola repositori dan di LanguageRepository.php saya, saya memiliki:
return $this->languages->select('languages.*')->get();

Anda harus menghapus get to use query builder.

return $this->languages->select('languages.*');

Oke. Sekarang terlihat lebih baik. Saya akan mengujinya lagi dan akan menulis hasil saya.
Tapi sementara itu ada satu masalah lagi. Ketika saya mencoba mencari beberapa kata, saya mendapatkan kesalahan ini:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'languages.action' in 'where clause' (SQL: select count(*) as aggregate from (select '1' as `row_count` from `languages` where (LOWER(`languages`.`name`) LIKE %m% count_row_table)

Tetapkan tindakan sebagai tidak dapat dicari/dipesan karena ditambahkan kolom.

Terima kasih banyak! @yajra
Ketika saya selesai dengan pengujian, saya akan mengirimkan hasilnya kepada Anda

Hasil pengujian saya:

Permintaan pertama:
select count(*) as aggregate from (select '1' as row_count from languages where languages.deleted_at is null and languages.deleted_at is null) count_row_table -> 3.64ms

Permintaan kedua:
select languages.* from languages where languages.deleted_at is null order by code asc limit 10 offset 0 -> 1,05ms

Terima kasih @yajra sekali lagi atas bantuannya.

Senang saya bisa membantu! Terima kasih!

Saya menderita dari masalah. Render lambat. Permintaan sisi server saya.

 $products = DB::connection("mysql2")->table('products')->
        join('products_description', 'products.products_id', '=', 'products_description.products_id')
            ->select(['products.products_id', 'products_description.products_name', 'products.products_isbn13', 'products.products_distributor', 'products.products_price', 'products.products_status']);
 return Datatables::of($products)->make(true);

tolong aku. Haruskah saya menulis skrip saya sendiri ke paginate? apa yang harus saya lakukan?
Saya memiliki catatan lebih dari 4.000.000 produk.
@yajra sangat menghargai jika Anda membantu saya.

Saya mendapatkan yang ini juga, mungkin permintaan yang dapat didata tidak menghubungkan param pagination ke kueri?

@pnghai bagaimana saya bisa memeriksanya?

@hsali maafkan aku. Alarm palsu. Ternyata logika saya melibatkan pengambilan gambar jarak jauh, yang menautkan ke server buntu dan memaksa setiap catatan mengambil koneksi 404, yang mengambil jumlah catatan * 60 (detik sebelum batas waktu). Saya menangguhkan logika itu dan semuanya bekerja dengan sangat baik sekarang.

Terima kasih banyak
(p/s: nick pnghai adalah akun github saya yang lain)

@pnghai bagaimana saya bisa memeriksanya?

Apakah Anda dapat menyelesaikan ini? Jika ya, bagaimana?

Bagi siapa saja yang mendapatkan pemuatan lambat, Anda mungkin memiliki semacam loop dalam fungsi pengontrol Anda yang mengulang rekaman yang diambil dengan cara tertentu.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

alejandri picture alejandri  ·  3Komentar

vipin733 picture vipin733  ·  3Komentar

SGarridoDev picture SGarridoDev  ·  3Komentar

FilipeBorges1993 picture FilipeBorges1993  ·  3Komentar

josiahke picture josiahke  ·  3Komentar