Je crée une application web de commerce électronique en utilisant PHP et MYSQL (MYISAM). Je veux savoir comment accélérer mes requêtesoptimisation mysql pour une grande base de données
J'ai une table de produits avec plus d'un million d'enregistrements avec les colonnes suivantes: id (int, primaire) catid (int) usr (int) titre (int) description (int) status (enum) date (datetime)
récemment divisé cette table en plusieurs tables basées sur les catégories de produits (catid). penser que cela pourrait réduire la charge sur le serveur.
Maintenant, j'ai besoin d'aller chercher les résultats de ces tables combinées avec les ensembles suivants de conditions 1. résultats correspondant à un usrid et le statut. Maintenant, je dois utiliser UNION pour aller chercher les résultats de toutes ces tables combinées, ce qui ralentit la permormance aussi je peux N'appliquez pas la LIMITE au jeu de résultats combinés. J'ai pensé à créer un index sur toutes ces colonnes pour accélérer la recherche, mais cela pourrait ralentir les INSERTS et les mises à jour. aussi je commence à croire que la division de la table n'était pas une bonne idée en premier lieu.
Je voudrais connaître la meilleure approche pour optimiser la récupération de données dans une telle situation. Je suis également ouvert aux nouvelles propositions de schémas de bases de données.
Pouvez-vous s'il vous plaît nous fournir un exemple de configuration de base de données? En outre, avez-vous envisagé d'utiliser 'JOIN '? – Bobby
Il serait utile que vous donniez un aperçu de votre schéma de base de données actuel, avec les tables et les clés appropriées. Pour les tables contenant des millions d'enregistrements, je suggère de ne pas les associer ou de les joindre à d'autres tables, mais de faire des requêtes uniques sur la table et de laisser le script combiner vos résultats. – Oli
En ce qui concerne les index: http://stackoverflow.com/questions/4377525/using-more-than-one-index-per-table-is-dangerous/4382833#4382833 – Ronnis