web-dev-qa-db-fra.com

plusieurs méta clés mais la charge du serveur est très élevée

quand nous avons 10 méta clés et plus, j'obtiens 100% d'utilisation du serveur. existe-t-il une option pour optimiser la requête?.

 $meta_query = array('relation' => 'AND');
    foreach ($requestData as  $key => $value) {
        $meta_query[] = array(
            'key' => $value,
            'value' => '1',
            'compare' => '='
        );
    }

    $args = array( 'post_type' => 'healthcare', 'post_status' => 'publish', 'posts_per_page' => -1, 'meta_query' => $meta_query);

    $loop = new WP_Query( $args );
    $total = $loop->found_posts;
3
Abhay Yadav

Les méta-requêtes complexes avec un grand nombre de méta-valeurs à trouver peuvent être lentes. Chaque clé méta pour laquelle vous effectuez une requête génère une jointure supplémentaire dans la requête. Si vous avez une base de données volumineuse, elle peut être lente. Vous pouvez essayer quelques choses:

  • Optimisez vos tables de base de données. Il est possible que vous disposiez de nombreuses données orphelines qui contribuent à la vitesse de requête des bases de données.
  • Essayez de limiter le nombre d'articles de résultats de requête, si vous avez beaucoup d'enregistrements dans l'ensemble de résultats qui peuvent également causer des problèmes de vitesse.
  • Contactez votre hébergeur (ou faites-le vous-même si vous y avez accès) pour consulter le journal des requêtes lentes de MySQL afin de déterminer la raison pour laquelle la requête est lente, et optimisez éventuellement les paramètres du serveur MySQL pour une meilleure mise en cache.
3
Milan Petrovic