Réduire le nombre de requêtes sql
7 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Réduire le nombre de requêtes sql
Bonjour, je pose cette question ici parce que je ne sais vraiment plus quoi faire. C'est un problème qui traine depuis plus de 6 mois et personne n'a vraiment réussi à m'aider, moi même je n'y arrive pas.
Le but est pour simple, il faudrait réduire le nombre de requêtes dans le code ci-dessous car il y en a beaucoup trop.
Sinon il y a la fonction doquery pour ceux qui veulent plus de précisions :
La page complète est dispo ici : http://www.rpgillusion.net/game/map.txt
Voila si quelqu'un si pouvait m'aider, je lui serais vraiment reconnaissant.
Le but est pour simple, il faudrait réduire le nombre de requêtes dans le code ci-dessous car il y en a beaucoup trop.
- Code: Tout sélectionner
//Récupération élément décors.
$mapquery = doquery("SELECT longitude, latitude, pic, land FROM {{table}} WHERE longitude between $x_start and $x_end AND latitude between $y_start and $y_end ORDER BY longitude DESC,latitude DESC LIMIT 48", "map");
while ($maprow = mysql_fetch_assoc($mapquery)) {
if (empty($TabMAP1[$maprow['longitude']][$maprow['latitude']]))
$TabMAP1[$maprow['longitude']][$maprow['latitude']] = $maprow['pic'];
}
mysql_free_result($mapquery);
//Récupération élément clans.
$clanquery = doquery("SELECT pic, longitude, latitude FROM {{table}} WHERE longitude between $x_start and $x_end AND latitude between $y_start and $y_end ORDER BY longitude DESC,latitude DESC LIMIT 48", "clans_elements");
while ($clanrow = mysql_fetch_assoc($clanquery)) {
if (empty($TabMAP7[$clanrow['longitude']][$clanrow['latitude']]))
$TabMAP7[$clanrow['longitude']][$clanrow['latitude']] = $clanrow['pic'];
}
mysql_free_result($clanquery);
//Récupération élément villes.
$townquery = doquery("SELECT name, longitude, latitude FROM {{table}} WHERE longitude between $x_start and $x_end AND latitude between $y_start and $y_end ORDER BY longitude DESC,latitude DESC LIMIT 48", "towns");
while ($townrow = mysql_fetch_assoc($townquery)) {
if (empty($TabMAP2[$townrow['longitude']][$townrow['latitude']]))
$TabMAP2[$townrow['longitude']][$townrow['latitude']] = $townrow['name'];
}
mysql_free_result($townquery);
//Récupération élément points de téléportations.
$teleportationquery = doquery("SELECT name, longitude, latitude FROM {{table}} WHERE longitude between $x_start and $x_end AND latitude between $y_start and $y_end ORDER BY longitude DESC,latitude DESC LIMIT 48", "teleportations");
while ($teleportationrow = mysql_fetch_assoc($teleportationquery)) {
if (empty($TabMAP9[$teleportationrow['longitude']][$teleportationrow['latitude']]))
$TabMAP9[$teleportationrow['longitude']][$teleportationrow['latitude']] = $teleportationrow['name'];
}
mysql_free_result($teleportationquery);
//Récupération élément bureaux des colis.
$officequery = doquery("SELECT name, longitude, latitude FROM {{table}} WHERE longitude between $x_start and $x_end AND latitude between $y_start and $y_end ORDER BY longitude DESC,latitude DESC LIMIT 48", "packages_offices");
while ($officerow = mysql_fetch_assoc($officequery)) {
if (empty($TabMAP8[$officerow['longitude']][$officerow['latitude']]))
$TabMAP8[$officerow['longitude']][$officerow['latitude']] = $officerow['name'];
}
mysql_free_result($officequery);
//Récupération élément coffres.
$cofferquery = doquery("SELECT name, longitude, latitude FROM {{table}} WHERE longitude between $x_start and $x_end AND latitude between $y_start and $y_end ORDER BY longitude DESC,latitude DESC LIMIT 48", "coffers");
while ($cofferrow = mysql_fetch_assoc($cofferquery)) {
if (empty($TabMAP5[$cofferrow['longitude']][$cofferrow['latitude']]))
$TabMAP5[$cofferrow['longitude']][$cofferrow['latitude']] = $cofferrow['name'];
}
mysql_free_result($cofferquery);
//Récupération élément arènes.
$arenaquery = doquery("SELECT name, longitude, latitude FROM {{table}} WHERE longitude between $x_start and $x_end AND latitude between $y_start and $y_end ORDER BY longitude DESC,latitude DESC LIMIT 48", "arenas");
while ($arenarow = mysql_fetch_assoc($arenaquery)) {
if (empty($TabMAP6[$arenarow['longitude']][$arenarow['latitude']]))
$TabMAP6[$arenarow['longitude']][$arenarow['latitude']] = $arenarow['name'];
}
mysql_free_result($arenaquery);
Sinon il y a la fonction doquery pour ceux qui veulent plus de précisions :
- Code: Tout sélectionner
function doquery($query, $table) {
include('config.php');
$sqlquery = mysql_query(str_replace("{{table}}", $dbsettings["prefix"] . "_" . $table, $query)) or die(mysql_error());
return $sqlquery;
}
La page complète est dispo ici : http://www.rpgillusion.net/game/map.txt
Voila si quelqu'un si pouvait m'aider, je lui serais vraiment reconnaissant.
Encore une fois, cette question ne se serait pas posée si tu avais pris le temps d'analyser le projet et la structure des tables à utiliser.
Quand tu programmes un truc, faut avoir en permanence à l'esprit qu'il faut éviter les doublons et être le plus générique possibles. C'est quasiment que des copiés collés dans ton cas donc ça se voit qu'il y a un problème non ?
2 tables auraient suffit: ELEMENTS et TYPES pour faire tout ça en une seule requête avec une jointure. Là on peut rien faire désolé. Et rafistoler un truc qui ne tient pas debout ça n'a pas de sens :/
Quand tu programmes un truc, faut avoir en permanence à l'esprit qu'il faut éviter les doublons et être le plus générique possibles. C'est quasiment que des copiés collés dans ton cas donc ça se voit qu'il y a un problème non ?
2 tables auraient suffit: ELEMENTS et TYPES pour faire tout ça en une seule requête avec une jointure. Là on peut rien faire désolé. Et rafistoler un truc qui ne tient pas debout ça n'a pas de sens :/
suite
YoyoS je comprends ta réflexion et je serais totalement d'accords si chaque table comprenait 3 ou 4 champs sql maximum, ca aurait été plus simple de tout combiner, mais la chaque table contient entre 10 et 20 champs chacune, ca devient impossible à combiner.
Donc il n'y a pas moyen de faire moins de requêtes alors. Peut-être faire un tableau (array) avec les noms des tables et boucler dessus en faisant la même requête, mais ça ne change rien au nombre de requêtes. C'est pas normal que tes tables fassent 20 colonnes. Je veux bien te faire une analyse vite fait si tu me fais une description complète de toute ta base, tes tables et tes champs actuels 
suite
Je peux te montrer la structure de quelques tables :
map :
`id` smallint(5) unsigned NOT NULL auto_increment,
`pic` tinyint(3) unsigned NOT NULL default '0',
`longitude` smallint(6) NOT NULL default '0',
`latitude` smallint(6) NOT NULL default '0',
`open` tinyint(3) unsigned NOT NULL default '1',
`land` tinyint(3) unsigned NOT NULL default '1',
towns :
`id` tinyint(3) unsigned NOT NULL auto_increment,
`name` varchar(30) NOT NULL default '',
`latitude` smallint(6) NOT NULL default '0',
`longitude` smallint(6) NOT NULL default '0',
`innprice` tinyint(4) NOT NULL default '0',
`parchmentprice` tinyint(3) NOT NULL default '0',
`parchmentcoffers` tinyint(3) NOT NULL default '0',
`total_buy` int(11) NOT NULL default '0',
`travelpoints` smallint(5) unsigned NOT NULL default '0',
`equipslist` text NOT NULL,
`itemslist` text NOT NULL,
`hidden` tinyint(3) NOT NULL default '0',
`coords_map1`varchar(50) NOT NULL default '',
`coords_map2`varchar(50) NOT NULL default '',
`coords_map3`varchar(50) NOT NULL default '',
`coords_map4`varchar(50) NOT NULL default '',
`coords_map5`varchar(50) NOT NULL default '',
`coords_map6`varchar(50) NOT NULL default '',
package offices :
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(30) NOT NULL default '',
`latitude` smallint(6) NOT NULL default '0',
`longitude` smallint(6) NOT NULL default '0',
`travelpoints` int(11) NOT NULL default '0',
`parchmentprice` int(11) NOT NULL default '0',
clans elements :
`id` tinyint(3) unsigned NOT NULL auto_increment,
`latitude` smallint(6) NOT NULL default '0',
`longitude` smallint(6) NOT NULL default '0',
`clan` int(11) NOT NULL default '0',
`pic` varchar(30) NOT NULL default '',
`type` smallint(6) NOT NULL default '0',
coffers :
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(30) NOT NULL default '',
`latitude` smallint(6) NOT NULL default '0',
`longitude` smallint(6) NOT NULL default '0',
`parchmentprice` int(11) NOT NULL default '0',
`total_buy` int(11) NOT NULL default '0',
`travelpoints` int(11) NOT NULL default '0',
`total` int(11) NOT NULL default '0',
`limit_d` int(11) NOT NULL default '0',
`total_d` int(11) NOT NULL default '0',
`total_r` int(11) NOT NULL default '0',
Mais je doute que tu sois avancé avec ca.
map :
`id` smallint(5) unsigned NOT NULL auto_increment,
`pic` tinyint(3) unsigned NOT NULL default '0',
`longitude` smallint(6) NOT NULL default '0',
`latitude` smallint(6) NOT NULL default '0',
`open` tinyint(3) unsigned NOT NULL default '1',
`land` tinyint(3) unsigned NOT NULL default '1',
towns :
`id` tinyint(3) unsigned NOT NULL auto_increment,
`name` varchar(30) NOT NULL default '',
`latitude` smallint(6) NOT NULL default '0',
`longitude` smallint(6) NOT NULL default '0',
`innprice` tinyint(4) NOT NULL default '0',
`parchmentprice` tinyint(3) NOT NULL default '0',
`parchmentcoffers` tinyint(3) NOT NULL default '0',
`total_buy` int(11) NOT NULL default '0',
`travelpoints` smallint(5) unsigned NOT NULL default '0',
`equipslist` text NOT NULL,
`itemslist` text NOT NULL,
`hidden` tinyint(3) NOT NULL default '0',
`coords_map1`varchar(50) NOT NULL default '',
`coords_map2`varchar(50) NOT NULL default '',
`coords_map3`varchar(50) NOT NULL default '',
`coords_map4`varchar(50) NOT NULL default '',
`coords_map5`varchar(50) NOT NULL default '',
`coords_map6`varchar(50) NOT NULL default '',
package offices :
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(30) NOT NULL default '',
`latitude` smallint(6) NOT NULL default '0',
`longitude` smallint(6) NOT NULL default '0',
`travelpoints` int(11) NOT NULL default '0',
`parchmentprice` int(11) NOT NULL default '0',
clans elements :
`id` tinyint(3) unsigned NOT NULL auto_increment,
`latitude` smallint(6) NOT NULL default '0',
`longitude` smallint(6) NOT NULL default '0',
`clan` int(11) NOT NULL default '0',
`pic` varchar(30) NOT NULL default '',
`type` smallint(6) NOT NULL default '0',
coffers :
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(30) NOT NULL default '',
`latitude` smallint(6) NOT NULL default '0',
`longitude` smallint(6) NOT NULL default '0',
`parchmentprice` int(11) NOT NULL default '0',
`total_buy` int(11) NOT NULL default '0',
`travelpoints` int(11) NOT NULL default '0',
`total` int(11) NOT NULL default '0',
`limit_d` int(11) NOT NULL default '0',
`total_d` int(11) NOT NULL default '0',
`total_r` int(11) NOT NULL default '0',
Mais je doute que tu sois avancé avec ca.
7 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Obtenir le nombre exact de requêtes effectuées sur Google
- Statistiques des requêtes sur les moteurs en 2006
- Nombre moyen de mots par requête : statistiques AOL Août 2006
- Parts de marché des moteurs aux USA (Décembre 2006)
- Parts de marché des moteurs aux USA (Janvier 2007)
- La Recherche Universelle de plus en plus présente dans Google
- Parts de marché des moteurs aux USA (Mars 2007)
- The Technology Behind Google
- Parts de marché des moteurs aux USA (Avril 2007)
- Suggestions de requêtes dans Google News
- Nombre de requete sql
- Nombre de requetes sql et hebergement ?
- Nombre de requête SQL pour un script de visite
- google e tes images
- Afficher sur une page le nombre de requet SQL
- google compte tes visiteurs
- Nombre de connexions SQL chez OVH espagne limitées!
- Adwords : Nombre de clics supérieur au nombre d'impressions!
- Nombre d'affichage divisé en fonction du nombre de pubs
- Problème sur le nombre d'affichages et le nombre de clics
- Rapport Nombre de Ventes/ Nombre de Visites ?
- rapport entre le nombre de mots-clés et le nombre de mots
Consultez la description détaillée des produits ou services de Google suivants : Google Web Accelerator, Google Site Stats, Google Suggest, Google Trends Recherche Personnalisée
- Calcul du nombre de backlinks
Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées. - Analyseur de densité
Cet outil vous permet de calculer l'indice de densité d'un mot-clé d'une page web. Il est calculé à la fois pour la balise TITLE, la balise META description et l'ensemble du texte de la page.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités



le forum