Index vs partition

20

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?

paweloque
la source
2
Au lieu de penser à l'indexation et au partitionnement comme des solutions d'amélioration des performances, vous devez considérer les deux comme des outils pouvant être utilisés séparément ou conjointement pour améliorer les performances de votre base de données.
ScottCher

Réponses:

18

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.

BillThor
la source
3
Si vous créez des partitions. Assurez-vous de choisir le bon périphérique de stockage pour chaque partition. Placez la partition de données réelle sur un lecteur haute vitesse et l'autre plus ancienne.
Nico
7

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.

Marian
la source