Rapidité de requêtage : Enum ou Tinyint ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Rapidité de requêtage : Enum ou Tinyint ?

Re: Rapidité de requêtage : Enum ou Tinyint ?

par moogli » 26 févr. 2011, 07:48

regarde ce que donne un explain sur les deux type de requete

@+

Re: Rapidité de requêtage : Enum ou Tinyint ?

par aqua007 » 25 févr. 2011, 04:12

salut,

perso j'utiliserais une table extérieure et y mettrais la clef primaire en clef étrangère.
pourquoi ?
- maintenabilité (pas besoin d'un alter table pour une faute d’orthographe ou l’ajout retrait d'un "type/section"
- Portabilité du script, la c'est MySQL only tu ne pourra pas le faire fonctionner sur un autre SGBD.


@+
Ces deux points ne me dérange pas, ma liste de sections je la modifie une fois par an et encore (Dans le cas d'un tiny int y'a pas cette problèmatique), et je compte pas aller sur autre chose que mysql.

La je veux juste avoir un avis sur la question que j'ai posé. Enum ou tiny int au niveau des perfs de requêtage ^^

Re: Rapidité de requêtage : Enum ou Tinyint ?

par moogli » 25 févr. 2011, 03:56

salut,

perso j'utiliserais une table extérieure et y mettrais la clef primaire en clef étrangère.
pourquoi ?
- maintenabilité (pas besoin d'un alter table pour une faute d’orthographe ou l’ajout retrait d'un "type/section"
- Portabilité du script, la c'est MySQL only tu ne pourra pas le faire fonctionner sur un autre SGBD.


@+

Rapidité de requêtage : Enum ou Tinyint ?

par aqua007 » 25 févr. 2011, 03:43

Bonjour,

J'ai une table de commentaires comportant + d'1 million de lignes, construite de la sorte (simplifiée)

id
id_membre
texte
section
id_fiche

section est actuellement un champs enum ('series_tv','films','livres','videos'....) comportant 25 valeurs différentes.

Je me demandais ce qui était le mieux pour mon champs section au niveau rapidité de requêtage :
- garder le enum
- le changer en un tiny int 1 unsigned (qui comportera des valeurs allant de 1 a 25 voir un peu plus par la suite mais 35maxi). series_tv => 1, films=>2, livres=>3

Les 2 principaux types de requête sur cette table :
SELECT * FROM commentaires WHERE section = 'films' AND id_fiche = 99 LIMIT 0,25
(sort les commentaires sur une fiche). Utilise un index (section,id_fiche)
SELECT * FROM commentaires WHERE section = 'films' LIMIT 0,25
(sort les 25 derniers commentaires de la section films). J'ai tenté d'indexer mon champ enum mais ça change pas grand chose, de souvenir un enum est déjà indéxé.

Merci.