Optimisation sql
12 messages
• Page 1 sur 1
-

xTrade - WRInaute passionné

- Messages: 2289
- Inscription: 11 Déc 2006
Optimisation sql
Supposons que je crée une table contenant tous les os de mes visiteurs, table utilisée à chaque visite.
Si je réordonne régulièrement cette table, avec l'os le plus fréquent en 1er et le moins fréquent en dernier, est-ce que cela a une influence sur la vitesse de recherche (vu que la valeur la plus fréquente est en 1ère position) ?
Si je réordonne régulièrement cette table, avec l'os le plus fréquent en 1er et le moins fréquent en dernier, est-ce que cela a une influence sur la vitesse de recherche (vu que la valeur la plus fréquente est en 1ère position) ?
-

arnaudmn - WRInaute passionné

- Messages: 1542
- Inscription: 11 Mai 2005
xTrade a écrit:Ok.
Et si je mets l'os en clé primaire, c'est utile?
Ca dépend de ce que tu mets dans ta table
Si tu veux faire une table dans laquelle tu mémorise juste le nombre de visite par os, avec comme champ "os" et "quantite" par exemple, oui, il _faut_ mettre os comme clé primaire. La clé primaire c'est ce qui identifi de manière unique une ligne de la table, donc dans ce cas c'est "os" qui est l'identifiant.
-

xTrade - WRInaute passionné

- Messages: 2289
- Inscription: 11 Déc 2006
arnaudmn a écrit:Ca dépend de ce que tu mets dans ta table
Si tu veux faire une table dans laquelle tu mémorise juste le nombre de visite par os, avec comme champ "os" et "quantite" par exemple, oui, il _faut_ mettre os comme clé primaire. La clé primaire c'est ce qui identifi de manière unique une ligne de la table, donc dans ce cas c'est "os" qui est l'identifiant.
En fait, ce que je veux mettre dans la table, c'est la correspondance entre "user agent" et os+browser, sans à avoir à tout rechercher (comme le fait le script sur lequel je me base)
En gros, dès que je récupère le "user agent", je veux regarder le plus rapidement possible dans la table s'il existe, puis récupérer l'id de l'os et du browser (et l'ajouter dans le cas où l'agent n'était pas présent)
Donc dans ce cas là, vaut-il mieux index+clé primaire (si c'est possible) ou bien clé primaire sur l'agent?
- fablezouave
- WRInaute discret

- Messages: 109
- Inscription: 20 Déc 2006
salut
Je dirais même plus, une clé primaire, c'est un INDEX (comme les autres) qui a une contrainte UNIQUE, c'est à dire qu'il ne pourra pas y avoir 2 lignes contenant 'windows' dans ta table. Après c'est à toi de voir si tu stockes 1 ligne par visiteur, ou une ligne par OS .... mais dans tous les cas, il te faut indexer cette colonne.
fab
Je dirais même plus, une clé primaire, c'est un INDEX (comme les autres) qui a une contrainte UNIQUE, c'est à dire qu'il ne pourra pas y avoir 2 lignes contenant 'windows' dans ta table. Après c'est à toi de voir si tu stockes 1 ligne par visiteur, ou une ligne par OS .... mais dans tous les cas, il te faut indexer cette colonne.
fab
-

xTrade - WRInaute passionné

- Messages: 2289
- Inscription: 11 Déc 2006
Merci pour vos réponses.
Et donc une nouvelle question
J'ai besoin d'additionner, pour toutes les valeurs de la table, une colonne 'hits'.
Est-ce plus rapide d'utiliser "SELECT SUM(hits) FROM table" ou bien un "SELECT hits FROM table" puis d'additionner avec une boucle?
Je pencherais pour la 1ère solution, mais comme je découvre mysql...
Et donc une nouvelle question
J'ai besoin d'additionner, pour toutes les valeurs de la table, une colonne 'hits'.
Est-ce plus rapide d'utiliser "SELECT SUM(hits) FROM table" ou bien un "SELECT hits FROM table" puis d'additionner avec une boucle?
Je pencherais pour la 1ère solution, mais comme je découvre mysql...
-

arnaudmn - WRInaute passionné

- Messages: 1542
- Inscription: 11 Mai 2005
xTrade a écrit:Est-ce plus rapide d'utiliser "SELECT SUM(hits) FROM table" ou bien un "SELECT hits FROM table" puis d'additionner avec une boucle?
La première est plus rapide. Ca evite au moteur de gérer un pointeur et de faire une copie du résultat de la requete en mémoire.
-

xTrade - WRInaute passionné

- Messages: 2289
- Inscription: 11 Déc 2006
Toujours dans ma découverte de Mysql, j'ai une nouvelle question
J'ai vu sur un forum qu'il conseillaient d'utiliser LIMIT 0,1 lorsqu'on était sur que la recherche ne donnait qu'un résultat.
Si je fais ma recherche sur une clé primaire, est-ce utile?
Merci!
J'ai vu sur un forum qu'il conseillaient d'utiliser LIMIT 0,1 lorsqu'on était sur que la recherche ne donnait qu'un résultat.
Si je fais ma recherche sur une clé primaire, est-ce utile?
Merci!
-

arnaudmn - WRInaute passionné

- Messages: 1542
- Inscription: 11 Mai 2005
LIMIT 0,1 c'est pour forcer le moteur a ne pas chercher plus de 1 enregistrement. Si tu fais une requete sur une clé primaire, donc unique, ça ne sert à rien.
Pour ma part je l'ai jamais utilisé quand je sais que j'ai au plus un résultat.
Pour ma part je l'ai jamais utilisé quand je sais que j'ai au plus un résultat.
12 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Google rachète Widevine (optimisation vidéo et DRM) - 13-12-2010
- AdSense Tracking : statistiques détaillées sur les clics AdSense - 29-02-2004
- Optimiser le nombre de mots dans les textes de liens - 03-10-2005
- Ranking Metrics lance son blog - 15-01-2007
- Ouverture d'un forum consacré à DeepIndex sur WebRankInfo - 18-01-2003
- Tutoriel URL Rewriting - 01-05-2006
- Formation au référencement Internet plébiscitée : Ranking Metrics - 31-10-2009
- Nouvelle version de notre FAQ - 04-05-2002
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
