Pourquoi n'est-il pas possible d'améliorer les performances avec des index uniquement, de sorte que d'autres techniques telles que le partitionnement de table deviennent nécessaires? La question ne concerne que les performances, bien sûr, différentes partitions peuvent être placées dans différents espaces de table, ce qui a d'autres effets qui ne peuvent pas être obtenus avec des indices.
Ou en d'autres termes, uniquement en termes de performances: est-il possible d'obtenir les mêmes améliorations de performances avec les index qu'avec le partitionnement des tables?
oracle
performance
paweloque
la source
la source
Réponses:
Non, le partitionnement permet de restreindre certaines analyses de table à une partition particulière. Les index ont tendance à être inutiles si vous renvoyez plus de 2 à 4% des données du tableau. Si vos critères de sélection permettent de localiser la requête sur une partition particulière, les autres partitions n'auront pas besoin d'être analysées.
Il est possible que l'optimiseur choisisse d'utiliser l'analyse de table pour certaines partitions et des index pour d'autres. Je n'ai vu aucun plan expliquant que cela se produise.
Si vous avez beaucoup de données historiques, des requêtes pour les données actuelles peuvent être construites pour limiter les partitions qui sont considérées à celles contenant des données actuelles.
la source
Pour répondre directement à votre dernière question: non, je ne pense pas qu'ils soient équivalents. Pensez à une très grande table (des dizaines de Go) qui devra être recherchée pour les données d'une journée. En utilisant des partitions quotidiennes, vous analyserez uniquement les données de cette journée, sans aucune pénalité d'espace, tandis qu'un index est une structure distincte qui peut ne pas contenir suffisamment d'informations (et prend également de l'espace, ce qui est une préoccupation lorsque vous parlez de grandes bases de données) ou peut ne pas être assez sélectif.
Quoi qu'il en soit, les index et les partitions ne rivalisent pas pour les mêmes avantages en termes d'utilisation et de performances. Vous devriez trouver le solde dans votre base de données.
la source