Est-il possible d'avoir une vue indexée dans MySQL?
J'ai trouvé un affichage sur le MySQL forums à partir de 2005, mais rien de plus récent que ça. Sur cette base, il n'est pas possible. Mais beaucoup de choses peuvent changer en l'espace de 3-4 ans.
Ce que je cherche est un moyen d'avoir un indice sur le point de vue, mais ont de la table qui est considéré restent non indexés. L'indexation mal le processus d'écriture et cette table est écrit assez souvent (au point où l'indexation ralentit tout pour une analyse). Toutefois, cette absence d'un index de mes requêtes douloureusement lent.
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que MySQL supporte les vues matérialisées, qui est ce que vous auriez besoin, mais il ne serait pas vous aider dans cette situation de toute façon. Si l'index est sur le point de vue ou sur la table sous-jacente, il aurait besoin d'être rédigé et mis à jour au cours d'une mise à jour de la table sous-jacente, de sorte qu'il serait toujours à cause de la vitesse d'écriture des questions.
Votre meilleur pari serait probablement à créer des tableaux de synthèse mis à jour périodiquement.
Avez-vous envisagé d'abstraire le traitement de vos opérations de données à partir de votre traitement analytique des données, de sorte qu'ils peuvent être spécialisés pour répondre à leurs besoins uniques?
L'idée de base étant que vous avez une version de la donnée qui est régulièrement modifié, ce serait le traitement des transactions côté et nécessite de lourds normalisation et de la lumière indices, de sorte que les opérations d'écriture sont rapides. Une deuxième version des données est structurée pour le traitement analytique et tend à être moins normalisée et plus fortement indexée pour un reporting rapide des opérations.
Données structurées autour de traitement analytique est généralement construit autour du cube de la méthodologie de l'entreposage de données, composée de plusieurs tables de faits qui représentent les faces du cube et de la dimension des tableaux qui représentent les arêtes du cube.
Flexviews prend en charge les vues matérialisées dans MySQL par le suivi des modifications apportées aux tables sous-jacentes et la mise à jour de la table qui fonctionne comme une vue matérialisée. Cette approche signifie que SQL prises en charge par le point de vue est un peu restreinte (comme le changement de la journalisation des routines de déterminer lequel des tables, il doit suivre les changements), mais pour autant que je sais que c'est le plus proche que vous pouvez obtenir pour les vues matérialisées dans MySQL.
Vous voulez seulement une vue indexée? Il est peu probable que l'écriture dans une table avec un seul indice serait qu'un élément perturbateur. Il n'y a pas de clé primaire?
Si chaque enregistrement est grand, vous pouvez améliorer les performances par trouver comment raccourcir. Ou de raccourcir la longueur de l'index dont vous avez besoin.
Si c'est une écriture seule table (c'est à dire que vous n'avez pas besoin de faire des mises à jour), cela peut être mortel en MySQL pour commencer l'archivage ou la suppression d'enregistrements (et de clés d'index), nécessitant l'indice de commencer à remplir (réutilisation) des emplacements à partir de supprimé les clés, plutôt que de simplement l'ajout de nouvelles valeurs de l'indice. Contre-intuitif, mais vous êtes mieux avec une table plus grande dans ce cas.