-1
votes

Optimisation pour cette requête SQL?

J'ai un site WordPress et je fais une requête pour obtenir tous les utilisateurs possédant une capacité / une plage spécifique. Dans la liste, je reçois un "méta_value" qui a un horodatage, puis je vérifie s'il est inférieur à celui de l'heure actuelle (expiré) xxx

Il est possible d'utiliser une jointure ou quelque chose pour optimiser La requête?

Merci d'avance


3 commentaires

Vous recherchez les utilisateurs qui sont expirés et possèdent des capacités particulières?


Salut. Oui, qui sont expirés et ont la capacité particulière "Premium".


Vous devriez utiliser des déclarations préparées, sinon votre code est vulnérable à l'injection SQL.


3 Réponses :


-1
votes

Il est préférable de laisser la base de données gérer le filtrage. Essayez quelque chose comme ceci: xxx

que vous obtenez toutes les lignes "expirées".


1 commentaires

Bonjour! Dans ce cas, l'horodatage n'est pas dans une colonne. Merci pour votre réponse



1
votes

Essayez auto Rejoignez la requête sur usermeta ​​code> Table dans WordPress STRY>

SELECT * FROM `wp_usermeta` um1 join `wp_usermeta` um2 
ON um1.user_id = um2.user_id 
AND um1.meta_key =  'wp_capabilities' 
AND um1.meta_value LIKE '%premium%' 
AND  `um2`.`meta_key` = '_expire_user_date


1 commentaires

Merci, ma requête finale est la suivante: Sélectionnez UM2.Meta_Value de WP_USERMETA UM1 Join WP_USERMETA UM2 sur UM1.User_id = um2.User_id et um1.meta_key = 'wp_cepabilities' et um1.meta_value comme '% Premium%' et um2.meta_key = '_Expire_user_date 'Alors ça m'aide à vérifier l'heure de chaque rangée



0
votes

rejoindre gauche ou subquiery fonctionnera. Je pense que de rejoindre sera optimal un xxx

mais le plus facile est sous-requête qui est un peu plus lent que gauche rejoindre xxx


2 commentaires

Bonjour! La requête me renvoie "la colonne" user_id "dans la liste des champs est ambiguë", BTW merci pour la réponse :-)


@Jasonderek Exactement merci, j'ai mis à jour ma réponse. Merci pour la correction. La jointe gauche est la plus rapide.