Bonjour,
j'ai besoin de votre expérience avant de me lancer.
J'ai une BDD mysql (mysql 5) qui contient prés d'1 million d'enregistrements répartis au sein de plusieurs tables classés par ordre alphabétique.
Table_a ---> tous les enregistrements commençant par la lettre A
Table_b ---> enregistrement commençant par la lettre b et ainsi de suite pour les autres tables
Table_c
....
Table_Z
Ceci a été fait afin de réduire mes requêtes (affichage par ordre alphabétique), mais niveau gestion et recherche cela n'est pas trés simple, car je suis obligé de joindre toutes les tables pour permettre de rechercher un enregistrement.
Ex: je cherche un article commençant par la lettre A---> ma requete interroge que la table A, donc c'est rapide.
Mais pour des recherches plus complexes, ex rechercher tous les articles d'un auteur, cela m'impose de joindre toutes les tables , car un auteur peut avoir écrit des articles commençant n'importe quelle lettre.
De plus, si je veux grouper des valeurs (group by) cela est aussi compliqué...
Donc ma question, au lieu d'avoir une table pour chaque lettre, mieux vaut t'il pas procéder directement à un partionnement de la table directement par mysql? en suivant ce tutoriel: http://krierjon.developpez.com/mysql/partitionnement/
Ou pensez vous tout simplement que le partionnement n'est pas indispensable, sachant que le nombre d'enregistrements est proche actuellement de 1 millions et va rapidement être multiplié par 5 ou 6 (soit 6 millions d'enregistrements). (ma table contient prés de 30 colonnes avec pas mal de varchar, donc c assez lourd)
Mon but est de pouvoir facilement gérer mes données, donc le mieux serait d'avoir l'ensemble de mes données dans une table unique, sans pour autant perdre en performance (le plus souvent, mes requetes sont de type select * where * like ****% ou affichage par type et categorie).
Merci d'avance pour vos conseils,
Thibaut
Partager