Auteur Sujet: Ou Qu'il Est Le Compteur ?  (Lu 2567 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Portekoi

  • Connaisseur
  • ***
  • Messages: 368
    • http://www.passion-cinquieme.com
Ou Qu'il Est Le Compteur ?
« Réponse #15 le: 29 septembre 2004 à 23:38:19 »
Bonsoir,

Quand tu dis optimiser au petit bonheur la chance, je pense que cela n'est pas vraiment unr bonne image...

Je suppose que tu as très bien connu UNIX et ainsi tout ce qui ce rapportais au langage machine...

Je pense donc que la chance n'a rien à voir la dedans et que tout codeur est capable d'optimiser son propre code.

Et, si cela ne fonctionne pas, peut être faut il en parler sur un forum de programmation en disant : Voilà ce que j'ai fais, voilà ce que je veux faire...

Je ne pense pas que ton site sois le plus gros hébergé par phpnet alors il doit y avoir une solution à ton problème :)

Bonne Nuit

Portekoi

Hors ligne Jacques Ghémard

  • Habitué
  • **
  • Messages: 224
    • http://www.francaislibres.net
Ou Qu'il Est Le Compteur ?
« Réponse #16 le: 30 septembre 2004 à 09:44:06 »
Non, je ne connais pas Unix. Oui, j'ai programmé de temps en temps en assembleur mais j'ai surtout travaillé sur des API, c'est à dire des automates programables industriels, ce qui n'a rien à voir avec la gestion de bases de données. Mais c'est parfois plus amusant.

Je dis "au petit bonheur la chance" et j'insiste. Par exemple, je viens de vérifier la différence entre "inner join" et "left join" et comme l'un ne remplace pas l'autre je ne vois pas pourquoi l'un serait moins gourmand en cpu que l'autre. Il faut seulement utiliser l'un ou l'autre à bon escient et pas transformer un "left join" en un "inner join" en rajoutant un "where" qui élimine les lignes dans lesquelles la 2e table est vide.

Donc je garde mes "left join" là ou ils sont utiles. Mais je n'ai aucune idée sur la façon dont MySql va traiter mes requête et donc sur le temps qu'il va bouffer dans cette pauvre CPU.

Quand on n'a pas moyen de mesurer, dire ça c'est mieux que ça relève plus de la religion que de la connaissance scientifique.

Amicalement
Jacques

PS : Je me demande bien si php 5, c'est à dire "tout objet" si j'ai bien compris, ne sera pas tres gourmand en CPU. Je viens de lire une page qui recommande de mettre chaque objet dans un fichier différent et de faire autant d'include que d'objet utilisés !!! Je crains pour les temps d'exécution là.  

Hors ligne Portekoi

  • Connaisseur
  • ***
  • Messages: 368
    • http://www.passion-cinquieme.com
Ou Qu'il Est Le Compteur ?
« Réponse #17 le: 30 septembre 2004 à 12:02:28 »
Salut,

D'après ma pauvre expérience, je dirais que 20 includes à la suite ne consomme pas spécialement... du moins, bien moins qu'un table sans clé primaire et sans index par exemple.

Maintenant, il y a bel et bien un différence entre un left et un inner. Mais si je dois te faire une démonstration, va falloir que tu viennes chez moi ^^

Sinon tu peux aller ici :

http://www.sql-server-performance.com/tuning_joins.asp

C'est anglais par contre :)

As tu des cles primaires?
Si oui, sont elles correctement répartis dans tes tables?
As tu créé des index?
Ne peux pas essayer d'afficher moins de sujet par page?

Bye

Portekoi qui essaie de t'aider :)

Hors ligne Jacques Ghémard

  • Habitué
  • **
  • Messages: 224
    • http://www.francaislibres.net
Ou Qu'il Est Le Compteur ?
« Réponse #18 le: 30 septembre 2004 à 15:45:28 »
Oui, j'ai des clés "PRIMARY" numériques et autoincrémentées sur toutes mes tables et mes joint sont fait avec ces clés et j'ai même une clé FULLTEXT pour des recherches sur plusieurs mots dans plusieurs champs.

Par contre il y a quelque chose qui m'échape : quelle est donc la différence entre clé et index ???

A part ça, je n'ai pas vraiment de problème en fait et la désactivation temporaire de ma base reste pour moi inexpliquée. Je suppose que c'était plutôt le pb de cable qui est arrivé dans ces heures là.

Mais j'aime bien comprendre et travailler proprement sans nuire à la colectivité donc j'essaye toujours d'améliorer ce qui peut l'être utilement.

Amicalement
Jacques

Hors ligne Portekoi

  • Connaisseur
  • ***
  • Messages: 368
    • http://www.passion-cinquieme.com
Ou Qu'il Est Le Compteur ?
« Réponse #19 le: 30 septembre 2004 à 15:51:46 »
Il est possible d'utiliser un index pour accéder rapidement à des informations spécifiques dans une table de base de données. Un index permet d'ordonner les valeurs d'une ou de plusieurs colonnes dans une table de base de données, par exemple la colonne du nom patronymique (lname) de la table employee. Dans ce cas particulier, si vous recherchez un employé par son nom, l'index vous permet d'obtenir ce renseignement plus rapidement que si vous aviez effectué la recherche dans toutes les lignes de la table.

L'index fournit des pointeurs renvoyant aux valeurs stockées dans les colonnes spécifiées de la table, puis il classe ces pointeurs en fonction de l'ordre de tri que vous avez spécifié. La base de données utilise l'index comme vous vous servez de l'index d'un livre : elle le consulte à la recherche d'une valeur particulière, puis suit le pointeur désignant la ligne qui contient cette valeur.

Cf : Doc de Sql server

-----------------------------------------------------------------------------------------------------

Il existe deux types de clés. Une clé primaire est un ensemble de colonnes d'une table possédant des valeurs uniques pour chaque ligne de cette table. Une clé primaire est également appelée contrainte de clé primaire parce qu'elle limite efficacement les valeurs que vous pouvez ajouter à la table : elle vous empêche d'ajouter une ligne dont les colonnes de clé primaire sont toutes égales aux valeurs correspondantes d'une autre ligne de cette table.

Par défaut la clé primaire est indexé :)

Désolé pour la flemme d'expliquer :)

Bye

Portekoi

 

Hors ligne Jacques Ghémard

  • Habitué
  • **
  • Messages: 224
    • http://www.francaislibres.net
Ou Qu'il Est Le Compteur ?
« Réponse #20 le: 30 septembre 2004 à 17:37:18 »
Oui, je pense avoir compris en cherchant de mon coté.

Je comprends effectivement qu'un index est une table plus légere pour la CPU qui lui permet de rechercher plus rapidement que s'il elle cherchait dans la vrai table. Comme un index des noms à la fin d'un bouquin. Chercher dans l'index des noms et aller ensuite à la page indiquée, est plus facile que de chercher le nom dans toutes les pages du livre.

Par contre, il est possible de créer un index sur la clé primaire. Ca me parrait aussi inutile que de créer un index indiquant à quelle page trouver la page x. Tout le monde sait que la page x est à la page x. Sauf évidement si la page x est en fait à la page y ce qui finalement ne m'étonnerait pas tant que ça.

Et bien en conclusion de ce fil, je vais donc créer des index correspondant à mes requetes les plus fréquentes.

Merci
Jacques

Hors ligne Portekoi

  • Connaisseur
  • ***
  • Messages: 368
    • http://www.passion-cinquieme.com
Ou Qu'il Est Le Compteur ?
« Réponse #21 le: 30 septembre 2004 à 17:41:08 »
"Par contre, il est possible de créer un index sur la clé primaire"

Non, une clé primaire est un index. La clé primaire te sert à avoir un champ contenant des données UNIQUE et de préférence numérique.

Ensuite la clé primaire est aussi un index qui te sert de "marque page"

Donc, une clé primaire est en réalité deux choses :
- Un champ unique
- Un marque page

Ce sont 2 notions totalement différentes.

Bye

Portekoi
« Modifié: 30 septembre 2004 à 18:04:33 par Portekoi »

Hors ligne Jacques Ghémard

  • Habitué
  • **
  • Messages: 224
    • http://www.francaislibres.net
Ou Qu'il Est Le Compteur ?
« Réponse #22 le: 30 septembre 2004 à 23:11:14 »
Trouvé cette page intéressante, principalement pour décripter les résultats d'un EXPLAIN SELECT ...

http://www.phpinfo.net/articles/article_op...tion-mysql.html

Du coup je passe en revue mes requetes le plus souvent utilisées et j'ai ajouté quelques index là ou il faut me semble-t-il.

Salut
Jacques