web-dev-qa-db-fra.com

Utilisation la plus efficace des requêtes de base de données

J'ai une table de base de données personnalisée contenant de nombreuses données que j'aimerais interroger plusieurs fois à partir d'un fichier de modèle personnalisé que j'ai créé. Dites que la table db ressemble à ceci:

id     name     city          Zip
23     Mike     New York      123
54     Peter    Los Angeles   456
78     Steven   Chicago       789
79     Tom      Los Angeles   450

Et je veux lancer au moins quatre requêtes, ressemblant un peu à ceci:

SELECT * FROM table LIMIT $paginated,10 (this is presenting all of the names)
SELECT id,city FROM table GROUP BY city (this will be a dropdown list of all the citys)
SELECT Zip FROM table WHERE city = "New York" GROUP BY Zip

Cela ne fait que trois requêtes, mais de toute façon - est-il plus efficace d'exécuter une seule requête volumineuse avec toutes les données dans un tableau, puis de simplement boucler ce tableau à tout moment, ou est-il préférable d'effectuer des requêtes de base de données réelles?

J'utilise $ wpdb-> get_results pour chaque requête, est-ce plus difficile pour le serveur de fonctionner? Je veux dire, utiliser le code WP pour effectuer des requêtes dans la base de données devrait donner plus de code PHP au compilateur à traduire, ai-je tort?

2
Richard B

L'objet $wpdbest basé sur ezSQL , il n'ajoute pas beaucoup de temps système, je ne m'inquiéterais donc pas pour cela. Ouvrir une deuxième connexion à la base de données vous-même entraînera probablement plus de temps système que l’utilisation des fonctions $wpdb.

Les trois requêtes que vous avez décrites sont des requêtes idéales dans la base de données (un petit ensemble de résultats provenant d'un grand ensemble de données). Par conséquent, vous ne devez pas les émuler en PHP. Assurez-vous d’ajouter quelques index à la table pour accélérer les requêtes (un sur city au moins). Utilisez la fonction EXPLAIN de MySQL pour savoir ce que la base de données fait pour exécuter votre requête et comment vous pouvez l’aider.

3
Jan Fabry