Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Administration
Administration Forum d'entraide sur l'administration de MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/01/2008, 18h56   #1
Invité de passage
 
Inscription : avril 2004
Messages : 10
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 10
Points : 3
Points : 3
Par défaut [Optimisation] Tables avec champs textes

Bonjour,
Je n'avais pas de pb de perf jusqu'à présent, mais c'est la première fois que 'jai affaire à des tables de 100,000 enregsitrements et ça commence à ramer.

J'ai des tables de forum par exemple qui mélange des champ integer avec des champ textes.

Pensez vous que l'on puisse gagner beaucoup en séparant cette table en 2 tables, l'une contenant les donnée integer, booléen et autres types de base et l'autre contenant les textes, qui n'est utilisée que pour l'affichage final du texte ?

Ca demande un changement de conception de la base et pas mal d'effort, si j'avais des retours d'expérience sur ce sujet pour savoir si on gagne beaucoup ça me motiverai à franchir ce pas.

Merci!
sietjp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 21h32   #2
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
Ce serait bien d'avoir la description de cette table.
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
-----------------------
Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
Usus magister est optimus
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 21h43   #3
Membre actif
 
Homme Cédric
Programmeur Delphi
Inscription : octobre 2006
Messages : 177
Détails du profil
Informations personnelles :
Nom : Homme Cédric
Âge : 32
Localisation : Belgique

Informations professionnelles :
Activité : Programmeur Delphi
Secteur : Finance

Informations forums :
Inscription : octobre 2006
Messages : 177
Points : 189
Points : 189
Il faudrait p-t prévoir la création d'index sur les tables.
Personne ne me contredira en disant que les index font gagner un temps énorme lors des recherches sur la table
jaduta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 07h45   #4
Invité de passage
 
Inscription : avril 2004
Messages : 10
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 10
Points : 3
Points : 3
Voici la table, elle contient 84000 enregistrements. Ce que j'envisageais donc est de sortir "comment", "message", "title" et "adip" dans une table différente avec correspondance de l'id unique.

Je n'ai pas oublié les index.
La plupart des requête utilise "ORDER BY lastedition DESC" et c'est ça qui pombe les résultats. Quand Mysql utilise l'index "lastedition" pour réordonner, il n'utilise pas l'index pour résoudre la clause WHERE et inversement. Il est possible d'optimsier ça en mettant es index su plusieurs colones mais ma clause where peut prendre des valeurs trés diverses ce qui ne me permet pas de faire ça.

Donc la seule solution que je vois pour optimiser (peut être gagner 50% du temps?) c'est déjà de séparer le texte des champs à longueur fixe (entiers, etc...).

Vote opinion ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  id int(10)   UNSIGNED No  auto_increment               
  public tinyint(3)   UNSIGNED No 0                
  expertonly tinyint(4)   No 0                
  message text latin1_swedish_ci  No                 
  state tinyint(4)   No 0                
  nbedition smallint(5)   UNSIGNED No 0                
  lasteditorid int(11)   No 0                
  comment text latin1_swedish_ci  No                 
  title text latin1_swedish_ci  No                 
  lastedition datetime   No 0000-00-00 00:00:00
  source smallint(5)   UNSIGNED No 0                
  target smallint(5)   UNSIGNED No 0                
  askerid int(11)   No 0                
  userid int(11)   No 0                
  adip text latin1_swedish_ci  No
Et les index :
Code :
1
2
3
4
5
6
7
PRIMARY  PRIMARY  83357       id  
public  INDEX  2       public  
askerid  INDEX  20839       askerid  
userid  INDEX  20839       userid 
target  INDEX  64       target
lastedition  INDEX  83357       lastedition  
expertonly  INDEX  3       expertonly
sietjp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 21h21   #5
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
A priori, je ne vois pas trop en quoi rajouter une jointure accélèrerait les choses, mais c'est difficile de te répondre sans connaître ta requête.
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h46.


 
 
 
 
Partenaires

Hébergement Web