0

Tengo una base de datos con una tabla con 5M de registros y casi 20 columnas...

Este es mi controller:

public function getLeads(Request $request)
    {
        $params = $request->params;
        $whereClause = $params['sac'];

        $query = DB::table('leads')->orderBy('NIF', 'asc');

        return DataTables::queryBuilder($query)->toJson();
    }

Actualmente tengo este código en javascript que funciona sin problemas en pocos resultados:

  if (dt_filter_table.length) {
    // Setup - add a text input to each footer cell
    $('.dt-column-search thead tr').clone(true).appendTo('.dt-column-search thead');
    $('.dt-column-search thead tr:eq(1) th').each(function (i) {
      var title = $(this).text();
      $(this).html('<input type="text" class="form-control form-control-sm" placeholder="Search ' + title + '" />');

      $('input', this).on('keyup change', function () {
        if (dt_filter.column(i).search() !== this.value) {
          dt_filter.column(i).search(this.value).draw();
        }
      });
    });

    var dt_filter = dt_filter_table.DataTable({
      serverSide: true,
      paging: true,
      ajax: {
        url: '/test/lead-list',
        data: function (data) {
          data.params = {
            sac: "helo"
          }
        }
      },

      columns: [
        { data: 'nif', name:'nif' },
        { data: 'name', name:'name' },
        { data: 'activity', name:'activity' },
        { data: 'province', name:'province' },
        { data: 'locality', name:'locality' },
        { data: 'telephone',
      render: function ( data, type, row ) {
        return data ? '<a href="tel:'+data+'">'+data+'</a>' : 'N/A'; 
 
      }, name:'telephone'

    },
        { data: 'telephone2', name:'telephone2' }
      ],
      dom: '<"d-flex justify-content-between align-items-center mx-0 row"<"col-sm-12 col-md-6"l><"col-sm-12 col-md-6"f>>t<"d-flex justify-content-between mx-0 row"<"col-sm-12 col-md-6"i><"col-sm-12 col-md-6"p>>',
      orderCellsTop: true,
      language: {
        paginate: {
          // remove previous & next text from pagination
          previous: '&nbsp;',
          next: '&nbsp;'
        }
      }
    });
  }

puse el serverSide: true,

pero al momento de correr la db con los 5M de registros... carga la tabla y en el contenido dice cargando unicamente.... elimino registros y dejo solo unos... 20k y funciona sin problema...

No tira error, todo funciona correcto, pero tarda mucho tiempo en cargar.

2
  • Deberias paginar el resultado, para que solo hagas una consulta de 100 registros y a media que paginas vaya cargando lo demas de 100 o 100, o segun como desees cargar semejante cantidad es insane. Podrias comenzar por investigar un poco sobre eso. laravel.com/docs/9.x/pagination Commented el 7 jun. 2022 a las 17:13
  • el pagination me sirve si paso directo a la vista, pero estoy usando datatables Commented el 7 jun. 2022 a las 17:25

0

Examina otras preguntas con la etiqueta o formula tu propia pregunta.