TransWikia.com

DataTables 650k muy lento. Server-side funciona?

Stack Overflow en español Asked by Lautaro on October 5, 2020

Actualmente estoy haciendo un filtrado de datos. Cuando hago una consulta de aproximadamente 650k de registros el dataTable tarda mucho en cargar y además me sobrecarga la memoria de la computadora.
A veces me devuelve error 500 del server. Probé la consulta directamente en phpmyadmin y tarda mucho menos. A veces devuelve el siguiente error:

DataTables warning: table id = tabla_users Ajax error. For more information about this error, please see http://datatables.net/tn/7

Controller:

                       $data = collect(DB::select("SELECT distinct usuarios.usuario_id, empresas.nombre_empresa as empresa, usuarios.apellido as apellido, usuarios.autorizado, usuarios.dni, usuarios.dni, usuarios.email, usuarios.fecha_creacion, usuarios.habilitado, usuarios.nombre AS nombre, usuarios.origen, usuarios.reportado, usuarios.telefono, team.equipo AS teams, aplicaciones.nombre AS nombre_app
                      FROM usuarios, usuario_aplicacion, aplicaciones, team_usuario, team, empresas, usuarios_empresa
                      WHERE  aplicaciones.aplicacion_id IN ( $aplicaciones )
                      AND usuario_aplicacion.aplicacion_id IN ($aplicaciones)
                      AND usuarios.email = usuarios_empresa.email
                      AND usuarios.email = usuario_aplicacion.email
                      AND usuarios.email = team_usuario.email_usuario
                      AND team_usuario.id_team = team.id_team
                      AND usuarios_empresa.id_empresa = empresas.id_empresa
                      AND team.id_team
                      IN ( $equipos )"));

Ajax desde la vista:

                var tabla = $('#tabla_usuario').DataTable({
                initComplete: function( settings, json ) {
                    $('.cargando').hide();

                },
                processing: true,
                serverSide: true,
                fixedHeader: true,
                orderCellsTop: true,
                lengthMenu: [ 50 ],
                paging: true,
                scrollX: true,
                lengthChange : true,
                searching: true,
                ordering: true,
                bDestroy: true,
                dom: 'Bfrtip',
                buttons: [
                    'copy', 'csv', 'excel'
                ],
                ajax: {
                    url: "{{ URL::route('route') }}",
                    dataSrc: '',
                    dataType:"json",
                    data: {
                        'fecha_desde': $("#fecha_desde").val(),
                        'fecha_hasta': $("#fecha_hasta").val(),
                        'aplicacion': JSON.stringify(ArrayAplicaciones),
                        'equipos': JSON.stringify(ArrayEquipos)
                    },
                },
                "language": {
                    "url": "//cdn.datatables.net/plug-ins/1.10.15/i18n/Spanish.json"
                },
                columns: [
                    { data: 'user' },
                    { data: 'name' },
                    { data: 'lastname' },
                    { data: 'code_id' },
                    { data: 'email' },
                    { data: 'date' },
                    { data: 'tel' },
                    { data: 'aplic' },
                    { data: 'teams' },
                    { data: 'empresa' }
                ]
            });

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP