首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >慢SQL查询/显示(PHP / jQuery)

慢SQL查询/显示(PHP / jQuery)
EN

Stack Overflow用户
提问于 2022-02-09 14:24:48
回答 3查看 111关注 0票数 0

我请求在我的mySQL数据库中获取数据(36,848条条目)。然后,我在我的网页上用jQuery格式化并附加它们。

这两次手术需要2分30秒。在此期间,页面上不可能进行其他操作。

有什么方法来优化这个过程来加速这个过程吗?像这样,它是不可用的。

我的PHP函数

代码语言:javascript
复制
<?php
function get_my_customers() {
    $req = $bdd->prepare("SELECT * FROM clients ORDER BY raison_sociale");
    $req->execute();
    $customers = $req->fetchAll(PDO::FETCH_ASSOC);

    return $customers;
}

if(isset($_POST['ajax'])){
    $result = get_my_customers();
    echo json_encode($result);
}
?>

jQuery (Ajax)中的数据检索

代码语言:javascript
复制
function get_my_customers(){
    var customers;
    $.ajax({
        url: "model/application/*******/customers/get_my_customers.php", 
        async: false,
        type: "POST",
        dataType: 'json',
        data: {ajax: 'true'},
        success: function(data)
        {
            customers = data;
        }
    });
    return customers;
}

var my_customers = get_my_customers();

$('#customers_list').append('<div class="list_card" card="customers_list"></div>');

$.each(my_customers, function(key, val){
    if(val.enseigne == null){
        var enseigne = '';
    }else{
        var enseigne = ',' + val.enseigne;
    }

    $('.list_card[card="customers_list"]').append(''+
        '<div class="list_card_element">'+
            '<div><b>'+ val.numero_client +'</b></div>'+
            '<div>'+
                '<b>'+ val.raison_sociale +'</b>' + enseigne +
                '<br>'+
                val.cp_livraison + ', ' + val.adresse_livraison +
            '</div>'+
        '</div>'
    );
});

你知道我能做些什么来加快处理时间吗?我尝试将SELECT查询限制在我需要的字段上,但这并没有改善处理时间。

我想知道是否需要时间而不是jQuery查询而不是布局。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-02-09 15:22:02

通过这个优化,我刚刚从2分钟30次到14次。

代码语言:javascript
复制
var construct_customers = "";

$.each(my_customers, function(key, val){
    if(val.enseigne == null){
        var enseigne = '';
    }else{
        var enseigne = ',' + val.enseigne;
    }

    construct_customers += '<div class="list_card_element">'+'<div><b>'+ val.numero_client +'</b></div>'+'<div>'+'<b>'+ val.raison_sociale +'</b>' + enseigne +'<br>'+val.cp_livraison + ', ' + val.adresse_livraison +'</div>'+'</div>';

    //OLD CODE
    // $('.list_card[card="customers_list"]').append(''+
    //     '<div class="list_card_element">'+
    //         '<div><b>'+ val.numero_client +'</b></div>'+
    //         '<div>'+
    //             '<b>'+ val.raison_sociale +'</b>' + enseigne +
    //             '<br>'+
    //             val.cp_livraison + ', ' + val.adresse_livraison +
    //         '</div>'+
    //     '</div>'
    // );
});

$('.list_card[card="customers_list"]').append(construct_customers);

我印象深刻

票数 0
EN

Stack Overflow用户

发布于 2022-02-09 14:48:07

在浏览器中使用devtools来确定是哪个步骤导致了减速。Network选项卡将显示Ajax请求和数据获取的时间间隔。如果这个时间间隔不是问题所在,那很可能是Javascript的问题。您可以使用performance选项卡更深入地了解Javascript性能。

票数 1
EN

Stack Overflow用户

发布于 2022-02-09 14:32:49

尝试使用索引参见that

MySQL可以按顺序(在某些条件下)对列使用索引。但是,MySQL不能使用混合ASC索引,(从,pants )中选择*。共享查询和创建表语句将帮助我们更具体地回答您的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71051296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档