Índice vs partición

20

¿Por qué no es posible lograr mejoras de rendimiento solo con índices, de modo que se necesitan otras técnicas como la partición de tablas? La pregunta se relaciona solo con el rendimiento, por supuesto, se pueden colocar diferentes particiones en diferentes espacios de tabla, lo que tiene otros efectos que no se pueden lograr con los índices.

O, en otras palabras, solo en cuanto al rendimiento: ¿es posible lograr las mismas mejoras de rendimiento con los índices que con la partición de tablas?

paweloque
fuente
2
En lugar de pensar en la indexación y la partición como una solución para mejorar el rendimiento, debe pensar en ambas como herramientas que se pueden usar por separado o en conjunto para lograr mejoras de rendimiento en su base de datos.
ScottCher

Respuestas:

18

No, la partición permite que algunos escaneos de tablas se restrinjan a una partición particular. Los índices tienden a ser inútiles si devuelve más del 2 al 4 por ciento de los datos de la tabla. Si sus criterios de selección permiten que la consulta se localice en una partición particular, entonces no será necesario escanear las otras particiones.

Es posible que el optimizador elija usar el escaneo de tablas para algunas particiones e índices para otras. No he visto ningún plan de explicación que indique que está sucediendo.

Si tiene muchos datos históricos, se pueden construir consultas para los datos actuales para limitar las particiones que se consideran a las que contienen datos actuales.

BillThor
fuente
3
Yo estás creando particiones. Asegúrese de elegir el dispositivo de almacenamiento adecuado para cada partición. Coloque la partición de datos real en un disco de alta velocidad y el otro de otro tipo.
Nico
7

Para responder directamente a su última pregunta: no, no creo que sean equivalentes. Piense en una tabla muy grande (decenas de GB) que necesitará buscar datos de un día. Usando particiones diarias, escaneará solo los datos de ese día, sin ninguna penalización de espacio, mientras que un índice es una estructura separada que podría no contener suficiente información (y también ocupa espacio, lo que es una preocupación cuando se habla de grandes bases de datos) o puede que no lo suficientemente selectivo

De todos modos, los índices y las particiones no compiten por los mismos beneficios en uso y rendimiento. Debe encontrar el saldo en su base de datos.

Mariana
fuente