Optimisation sql

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par xTrade, 12 Février 2007.

  1. xTrade
    xTrade WRInaute passionné
    Inscrit:
    11 Décembre 2006
    Messages:
    1 473
    J'aime reçus:
    0
    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) ?
     
  2. arnaudmn
    arnaudmn WRInaute passionné
    Inscrit:
    11 Mai 2005
    Messages:
    1 038
    J'aime reçus:
    2
    L'ordre d'affichage et l'ordre de stockage n'ont rien a voir.
    Pour trier il faut des index. Si tu as un index sur l'os, la recherche ira plus vite. Et l'insertion sera plus lente.
     
  3. xTrade
    xTrade WRInaute passionné
    Inscrit:
    11 Décembre 2006
    Messages:
    1 473
    J'aime reçus:
    0
    Ok.

    Et si je mets l'os en clé primaire, c'est utile?
     
  4. arnaudmn
    arnaudmn WRInaute passionné
    Inscrit:
    11 Mai 2005
    Messages:
    1 038
    J'aime reçus:
    2
    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.
     
  5. xTrade
    xTrade WRInaute passionné
    Inscrit:
    11 Décembre 2006
    Messages:
    1 473
    J'aime reçus:
    0
    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?
     
  6. arnaudmn
    arnaudmn WRInaute passionné
    Inscrit:
    11 Mai 2005
    Messages:
    1 038
    J'aime reçus:
    2
    Une clé primaire est obligatoirement indexée :)
     
  7. xTrade
    xTrade WRInaute passionné
    Inscrit:
    11 Décembre 2006
    Messages:
    1 473
    J'aime reçus:
    0
    Ah! Ok, merci!
    J'en apprends tous les jours!
     
  8. fablezouave
    fablezouave WRInaute discret
    Inscrit:
    20 Décembre 2006
    Messages:
    106
    J'aime reçus:
    0
    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
     
  9. xTrade
    xTrade WRInaute passionné
    Inscrit:
    11 Décembre 2006
    Messages:
    1 473
    J'aime reçus:
    0
    Merci pour vos réponses.

    Et donc une nouvelle question :wink:

    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...
     
  10. arnaudmn
    arnaudmn WRInaute passionné
    Inscrit:
    11 Mai 2005
    Messages:
    1 038
    J'aime reçus:
    2
    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.
     
  11. xTrade
    xTrade WRInaute passionné
    Inscrit:
    11 Décembre 2006
    Messages:
    1 473
    J'aime reçus:
    0
    Toujours dans ma découverte de Mysql, j'ai une nouvelle question :wink:

    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!
     
  12. arnaudmn
    arnaudmn WRInaute passionné
    Inscrit:
    11 Mai 2005
    Messages:
    1 038
    J'aime reçus:
    2
    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.
     
Chargement...
Similar Threads - Optimisation sql Forum Date
Optimisation d'un champ sql Développement d'un site Web ou d'une appli mobile 17 Novembre 2018
Problème optimisation d'un count() : Mysql Développement d'un site Web ou d'une appli mobile 15 Février 2014
Optimisation Requete SQL Développement d'un site Web ou d'une appli mobile 14 Juin 2013
Optimisation recherche sur grosse table mysql Développement d'un site Web ou d'une appli mobile 30 Mars 2013
optimisation bdd mysql Développement d'un site Web ou d'une appli mobile 7 Mars 2013
Optimisation sql - Petite question Développement d'un site Web ou d'une appli mobile 16 Août 2012
Optimisation Mysql Administration d'un site Web 23 Mai 2012
Optimisation d'un tri Mysql Développement d'un site Web ou d'une appli mobile 23 Juillet 2011
Problématique optimisation accès bdd mysql ... Développement d'un site Web ou d'une appli mobile 8 Mai 2011
Optimisation SQL - Inner Join (3) ou 3 x Select ? Développement d'un site Web ou d'une appli mobile 28 Janvier 2011
Optimisation MySQL - Debian 5 Administration d'un site Web 16 Octobre 2010
optimisation site web / mysql Développement d'un site Web ou d'une appli mobile 31 Juillet 2010
Mysql optimisation index/requêtes. Développement d'un site Web ou d'une appli mobile 14 Avril 2009
[PHP/MySQL] Optimisation multiples requêtes Développement d'un site Web ou d'une appli mobile 24 Juin 2008
Petite optimisation SQL ? Développement d'un site Web ou d'une appli mobile 18 Mars 2008
[MYSQL] Pb de requête + optimisation structure table Développement d'un site Web ou d'une appli mobile 18 Janvier 2008
[optimisation] mysql connect close Développement d'un site Web ou d'une appli mobile 26 Décembre 2007
Optimisation site : accès mysql ou include ? Développement d'un site Web ou d'une appli mobile 23 Septembre 2007
[optimisation Mysql] Fermer ou pas les connexions distantes Développement d'un site Web ou d'une appli mobile 3 Août 2007
Optimisation mysql et LIMIT Développement d'un site Web ou d'une appli mobile 2 Mars 2007