Partitioned Tables and IndexesPartitioned Tables and Indexes

SE APLICA A: síSQL Server síAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

SQL ServerSQL Server es compatible con la creación de particiones de tabla e índice.supports table and index partitioning. Los datos de tablas e índices con particiones se dividen en unidades que pueden propagarse por más de un grupo de archivos de la base de datos.The data of partitioned tables and indexes is divided into units that can be spread across more than one filegroup in a database. Los datos se dividen en sentido horizontal, de forma que los grupos de filas se asignan a particiones individuales.The data is partitioned horizontally, so that groups of rows are mapped into individual partitions. Las particiones de un índice o una tabla deben encontrarse en la misma base de datos.All partitions of a single index or table must reside in the same database. La tabla o el índice se tratarán como una sola entidad lógica cuando se realicen consultas o actualizaciones en los datos.The table or index is treated as a single logical entity when queries or updates are performed on the data. Antes de SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1, las tablas e índices con particiones no estaban disponibles en todas las ediciones de SQL ServerSQL Server.Prior to SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1, partitioned tables and indexes were not available in every edition of SQL ServerSQL Server. Para obtener una lista de las características admitidas por las ediciones de SQL ServerSQL Server, vea Características compatibles con las ediciones de SQL Server 2016.For a list of features that are supported by the editions of SQL ServerSQL Server, see Editions and Supported Features for SQL Server 2016.

Importante

SQL ServerSQL Server admite hasta 15.000 particiones de forma predeterminada.supports up to 15,000 partitions by default. En versiones anteriores a SQL Server 2012 (11.x)SQL Server 2012 (11.x), el número de particiones se limitaba a 1000 de forma predeterminada.In versions earlier than SQL Server 2012 (11.x)SQL Server 2012 (11.x), the number of partitions was limited to 1,000 by default. En sistemas basados en x86, es posible crear una tabla o un índice con más de 1000 particiones, aunque no se admite.On x86-based systems, creating a table or index with more than 1,000 partitions is possible, but is not supported.

Ventajas de la creación de particionesBenefits of Partitioning

La creación de particiones de tablas o índices grandes puede tener las siguientes ventajas de administración y rendimiento.Partitioning large tables or indexes can have the following manageability and performance benefits.

  • Se puede transferir u obtener acceso a subconjuntos de datos de forma rápida y eficaz, a la vez que mantiene la integridad de una recopilación de datos.You can transfer or access subsets of data quickly and efficiently, while maintaining the integrity of a data collection. Por ejemplo, una operación como la carga de datos desde un sistema OLTP a un sistema OLAP tarda solo unos segundos, en lugar de los minutos y las horas que se requieren cuando no se ha realizado una partición de los datos.For example, an operation such as loading data from an OLTP to an OLAP system takes only seconds, instead of the minutes and hours the operation takes when the data is not partitioned.

  • Puede realizar operaciones de mantenimiento en una o más particiones más rápidamente.You can perform maintenance operations on one or more partitions more quickly. Las operaciones son más eficaces porque solo afectan a estos subconjuntos de datos, y no a toda la tabla.The operations are more efficient because they target only these data subsets, instead of the whole table. Por ejemplo, se puede elegir comprimir los datos en una o varias particiones o recompilar una o varias particiones de un índice.For example, you can choose to compress data in one or more partitions or rebuild one or more partitions of an index.

  • Se puede mejorar el rendimiento de las consultas, en función de los tipos de consultas que se suelen ejecutar y de la configuración del hardware.You may improve query performance, based on the types of queries you frequently run and on your hardware configuration. Por ejemplo, el optimizador de consultas puede procesar consultas de combinación de igualdad entre dos o más tablas con particiones más rápidamente cuando las columnas de partición son las mismas que las columnas en las que se combinan las tablas.For example, the query optimizer can process equi-join queries between two or more partitioned tables faster when the partitioning columns are the same as the columns on which the tables are joined. Consulte la sección Consultas a continuación para más información.See Queries below for further information.

Cuando SQL ServerSQL Server realiza una ordenación de los datos para operaciones de E/S, los ordena primero por partición.When SQL ServerSQL Server performs data sorting for I/O operations, it sorts the data first by partition. SQL ServerSQL Server tiene acceso a una unidad cada vez y esto podría reducir el rendimiento.accesses one drive at a time, and this might reduce performance. Para mejorar el rendimiento de la ordenación de los datos, cree franjas de los archivos de datos de las particiones en más de un disco configurando una RAID.To improve data sorting performance, stripe the data files of your partitions across more than one disk by setting up a RAID. De este modo, aunque SQL ServerSQL Server siga ordenando los datos por partición, puede tener acceso a todas las unidades de cada partición al mismo tiempo.In this way, although SQL ServerSQL Server still sorts data by partition, it can access all the drives of each partition at the same time.

Además, la partición permite mejorar el rendimiento habilitando la extensión de bloqueo en el nivel de partición y no en toda la tabla.In addition, you can improve performance by enabling lock escalation at the partition level instead of a whole table. Esto puede reducir la contención en la tabla por bloqueo.This can reduce lock contention on the table. Para reducir la contención de bloqueo y permitir la extensión de bloqueo a la partición, establezca la opción LOCK_ESCALATION de la instrucción ALTER TABLE en AUTO.To reduce lock contention by allowing lock escalation to the partition, set the LOCK_ESCALATION option of the ALTER TABLE statement to AUTO.

Componentes y conceptosComponents and Concepts

Los siguientes términos son aplicables para las particiones de tablas e índices.The following terms are applicable to table and index partitioning.

Función de particiónPartition function

Una función de partición define la forma de asignar las filas de una tabla o un índice a un conjunto de particiones a partir de los valores de una determinada columna, denominada columna de partición.A database object that defines how the rows of a table or index are mapped to a set of partitions based on the values of certain column, called a partitioning column. Es decir, la función de partición define el número de particiones que la tabla tendrá y cómo se definen los límites de las particiones.That is, the partition function defines the number of partitions that the table will have and how the boundaries of the partitions are defined. Por ejemplo, dada una tabla con datos de pedidos de ventas, puede crear doce particiones (mensuales) de la tabla tomando como base una columna datetime , por ejemplo una fecha de ventas.For example, given a table that contains sales order data, you may want to partition the table into twelve (monthly) partitions based on a datetime column such as a sales date.

Esquema de particiónPartition scheme

Objeto de base de datos que asigna las particiones de una función de partición a un conjunto de grupos de archivos.A database object that maps the partitions of a partition function to a set of filegroups. La principal razón para colocar las particiones en distintos grupos de archivos es garantizar que se puedan realizar operaciones de copia de seguridad en particiones de forma independiente.The primary reason for placing your partitions on separate filegroups is to make sure that you can independently perform backup operations on partitions. Esto se debe a que se pueden realizar copias de seguridad en grupos de archivos individuales.This is because you can perform backups on individual filegroups.

Columna de particiónPartitioning column

La columna de una tabla o índice que una función de partición usa para crear particiones en la tabla o índice.The column of a table or index that a partition function uses to partition the table or index. Las columnas calculadas que participan en una función de partición deben marcarse explícitamente como PERSISTED.Computed columns that participate in a partition function must be explicitly marked PERSISTED. Todos los tipos de datos válidos para el uso en columnas de índice pueden utilizarse como una columna de partición con la excepción de timestamp.All data types that are valid for use as index columns can be used as a partitioning column, except timestamp. No se pueden especificar los tipos de datos ntext, text, image, xml, varchar(max) , nvarchar(max) o varbinary(max) .The ntext, text, image, xml, varchar(max), nvarchar(max), or varbinary(max) data types cannot be specified. Tampoco se pueden especificar columnas de tipo de datos de alias y de tipo definido por el usuario de Common Language Runtime (CLR) de Microsoft .NET Framework.Also, Microsoft .NET Framework common language runtime (CLR) user-defined type and alias data type columns cannot be specified.

Índices alineadosAligned index

Un índice que se compila con el mismo esquema de partición que su tabla correspondiente.An index that is built on the same partition scheme as its corresponding table. Cuando una tabla y sus índices están alineados, SQL ServerSQL Server puede dividir las particiones de forma rápida y eficaz al mismo tiempo que mantiene la estructura de la partición tanto en la tabla como en sus índices.When a table and its indexes are in alignment, SQL ServerSQL Server can switch partitions quickly and efficiently while maintaining the partition structure of both the table and its indexes. Un índice no tiene por qué participar en la misma función de partición con nombre para alinearse con su tabla base.An index does not have to participate in the same named partition function to be aligned with its base table. Sin embargo, la función de partición del índice y la tabla base deben ser básicamente iguales, dado que:However, the partition function of the index and the base table must be essentially the same, in that:

  1. Los argumentos de las funciones de partición tienen el mismo tipo de dato.The arguments of the partition functions have the same data type.
  2. Definen el mismo número de particiones.They define the same number of partitions.
  3. Definen los mismos valores de límite para las particiones.They define the same boundary values for partitions.

Crear particiones en índices clústerPartitioning Clustered Indexes

Al crear particiones en un índice clúster, la clave de agrupación en clústeres debe contener la columna de partición.When partitioning a clustered index, the clustering key must contain the partitioning column. Cuando se crean particiones en un índice clúster no único y la columna de partición no se especifica explícitamente en la clave de agrupación en clústeres, SQL ServerSQL Server agrega de forma predeterminada la columna de partición a la lista de claves de índice clúster.When partitioning a nonunique clustered index, and the partitioning column is not explicitly specified in the clustering key, SQL ServerSQL Server adds the partitioning column by default to the list of clustered index keys. Si el índice clúster es único, deberá especificar explícitamente que la clave de índice clúster contiene la columna de partición.If the clustered index is unique, you must explicitly specify that the clustered index key contain the partitioning column.

Crear particiones en índices no clústerPartitioning NonClustered Indexes

Al crear particiones en un índice no clúster único, la clave de índice debe contener la columna de partición.When partitioning a unique nonclustered index, the index key must contain the partitioning column. Al crear particiones de un índice no agrupado que no es único, SQL ServerSQL Server agrega de forma predeterminada la columna de partición como una columna sin clave (incluida) del índice para asegurarse de que este está alineado con la tabla base.When partitioning a nonunique, nonclustered index, SQL ServerSQL Server adds the partitioning column by default as a nonkey (included) column of the index to make sure the index is aligned with the base table. SQL ServerSQL Server no agrega la columna de partición al índice si ya está presente en él.does not add the partitioning column to the index if it is already present in the index.

Índice no alineadoNon-aligned index

Un índice con particiones independientemente de su tabla correspondiente.An index partitioned independently from its corresponding table. Es decir, el índice tiene un esquema de partición diferente o está colocado en un grupo de archivos independiente de la tabla base.That is, the index has a different partition scheme or is placed on a separate filegroup from the base table. El diseño de un índice con particiones no alineado puede ser útil en los siguientes casos:Designing an non-aligned partitioned index can be useful in the following cases:

  • En la tabla base no se han creado particiones.The base table has not been partitioned.
  • La clave de índice es única y no contiene la columna de partición de la tabla.The index key is unique and it does not contain the partitioning column of the table.
  • Desea que la tabla base participe en combinaciones por colocación con más tablas usando columnas de combinación diferentes.You want the base table to participate in collocated joins with more tables using different join columns.

Eliminación de particionesPartition elimination

El proceso por el que el optimizador de consultas tiene acceso únicamente a las particiones pertinentes para cumplir los criterios de filtro de la consulta.The process by which the query optimizer accesses only the relevant partitions to satisfy the filter criteria of the query.

Instrucciones de rendimientoPerformance Guidelines

El nuevo, mayor límite de 15.000 particiones afecta a la memoria, operaciones con particiones de índice, comandos DBCC, y consultas.The new, higher limit of 15,000 partitions affects memory, partitioned index operations, DBCC commands, and queries. Esta sección describe las implicaciones para el rendimiento de aumentar el número de particiones en 1.000 y proporciona soluciones según sea necesario.This section describes the performance implications of increasing the number of partitions above 1,000 and provides workarounds as needed. Con el límite en el número máximo de particiones ampliado a 15.000, puede almacenar los datos durante más tiempo.With the limit on the maximum number of partitions being increased to 15,000, you can store data for a longer time. Sin embargo, debe conservar datos solo mientras sea necesario y mantener un equilibrio entre el rendimiento y el número de particiones.However, you should retain data only for as long as it is needed and maintain a balance between performance and number of partitions.

Instrucciones sobre núcleos de procesador y número de particionesProcessor Cores and Number of Partitions Guidelines

Para maximizar el rendimiento con operaciones en paralelo, se recomienda usar el mismo número de particiones que núcleos de procesador, hasta un máximo de 64 (que es el número máximo de procesadores en paralelo que SQL ServerSQL Server puede usar).To maximize performance with parallel operations, we recommend that you use the same number of partitions as processor cores, up to a maximum of 64 (which is the maximum number of parallel processors that SQL ServerSQL Server can utilize).

Instrucciones y uso de la memoriaMemory Usage and Guidelines

Se recomienda usar al menos 16 GB de RAM si un gran número de particiones están en uso.We recommend that you use at least 16 GB of RAM if a large number of partitions are in use. Si el sistema no tiene suficiente memoria, (DML) las instrucciones de lenguaje de manipulación de datos, (DDL) instrucciones de lenguaje de definición de datos y otras operaciones pueden generar errores debido a la memoria insuficiente.If the system does not have enough memory, Data Manipulation Language (DML) statements, Data Definition Language (DDL) statements and other operations can fail due to insufficient memory. Los sistemas con 16 GB de RAM que funcionan con muchos procesos intensivos de memoria pueden quedarse sin memoria en operaciones que ejecutan en un gran número de particiones.Systems with 16 GB of RAM that run many memory-intensive processes may run out of memory on operations that run on a large number of partitions. Por consiguiente, cuanta más memoria se tenga por encima de 16 GB menor es la posibilidad de enfrentarse a problemas de rendimiento y de memoria.Therefore, the more memory you have over 16 GB, the less likely you are to encounter performance and memory issues.

Las limitaciones de memoria pueden afectar al rendimiento o capacidad de SQL ServerSQL Server para crear un índice con particiones.Memory limitations can affect the performance or ability of SQL ServerSQL Server to build a partitioned index. Esto sucede especialmente cuando el índice no está alineado con su tabla base o no está alineado con su índice clúster si ya se ha aplicado un índice clúster a la tabla.This is especially the case when the index is not aligned with its base table or is not aligned with its clustered index, if the table already has a clustered index applied to it. En este caso, puede ser útil aumentar la opción de configuración del servidor de memoria para la creación de índices.In this case, it may be useful to increase the index create memory Server Configuration Option. Para más información, consulte Establecer la opción de configuración del servidor Memoria para creación de índices.For more information, refer to Configure the index create memory Server Configuration Option.

Operaciones de índices con particionesPartitioned Index Operations

La creación y recompilación de índices no alineados en una tabla con más de 1000 particiones es posible, pero no se admite.Creating and rebuilding non-aligned indexes on a table with more than 1,000 partitions is possible, but is not supported. Si se hace, se puede degradar el rendimiento o consumir excesiva memoria durante estas operaciones.Doing so may cause degraded performance or excessive memory consumption during these operations.

Crear y recompilar índices alineados podría tardar mucho más tiempo en ejecutarse cuando el número de particiones aumenta.Creating and rebuilding aligned indexes could take longer to execute as the number of partitions increases. Se recomienda que no ejecute varios comandos de crear y recompilar índices al mismo tiempo, ya que quizás se enfrente a problemas de rendimiento y memoria.We recommend that you do not run multiple create and rebuild index commands at the same time as you may run into performance and memory issues.

Cuando SQL ServerSQL Server realiza la ordenación para crear índices con particiones, primero crea una tabla de orden para cada partición.When SQL ServerSQL Server performs sorting to build partitioned indexes, it first builds one sort table for each partition. Luego, compila las tablas de orden en el grupo de archivos respectivo de cada partición o en tempdb si se ha especificado la opción de índice SORT_IN_TEMPDB.It then builds the sort tables either in the respective filegroup of each partition or in tempdb if the SORT_IN_TEMPDB index option is specified. Cada tabla de orden requiere una cantidad mínima de memoria para su compilación.Each sort table requires a minimum amount of memory to build. Cuando crea un índice con particiones que está alineado con su tabla base, las tablas de orden se crean de una en una con menos memoria.When you are building a partitioned index that is aligned with its base table, sort tables are built one at a time, using less memory. Sin embargo, cuando crea un índice con particiones no alineado, las tablas de orden se crean al mismo tiempo.However, when you are building a nonaligned partitioned index, the sort tables are built at the same time. En consecuencia, debe haber disponible memoria suficiente para permitir la realización de estas ordenaciones simultáneas.As a result, there must be sufficient memory to handle these concurrent sorts. Cuanto mayor es el número de particiones, mayor es la cantidad de memoria necesaria.The larger the number of partitions, the more memory required. El tamaño mínimo para cada tabla de orden y para cada partición es de 40 páginas y 8 kilobytes por página.The minimum size for each sort table, for each partition, is 40 pages, with 8 kilobytes per page. Por ejemplo, un índice con particiones no alineado con 100 particiones necesita memoria suficiente para ordenar en serie 4.000 (40 * 100) páginas al mismo tiempo.For example, a nonaligned partitioned index with 100 partitions requires sufficient memory to serially sort 4,000 (40 * 100) pages at the same time. Si esta memoria está disponible, la operación de creación será satisfactoria, aunque ello afectará negativamente al rendimiento.If this memory is available, the build operation will succeed, but performance may suffer. Si esta memoria no está disponible, se producirá un error durante la operación de creación.If this memory is not available, the build operation will fail. De forma alternativa, un índice con particiones alineado con 100 particiones solo necesita memoria suficiente para ordenar 40 páginas, ya que las ordenaciones no se realizan al mismo tiempo.Alternatively, an aligned partitioned index with 100 partitions requires only sufficient memory to sort 40 pages, because the sorts are not performed at the same time.

Tanto para los índices alineados como para los no alineados, el requisito de memoria puede ser mayor si SQL ServerSQL Server está aplicando grados de paralelismo a la operación de creación en un equipo con varios procesadores.For both aligned and non-aligned indexes, the memory requirement can be greater if SQL ServerSQL Server is applying degrees of parallelism to the build operation on a multiprocessor computer. Esto es así porque cuanto mayores son los grados de paralelismo, mayor es también el requisito de memoria.This is because the greater the degrees of parallelism, the greater the memory requirement. Por ejemplo, si SQL ServerSQL Server establece los grados de paralelismo en 4, un índice no alineado con 100 particiones necesitará memoria suficiente para que cuatro procesadores puedan ordenar 4.000 páginas al mismo tiempo o 16.000 páginas.For example, if SQL ServerSQL Server sets degrees of parallelism to 4, a nonaligned partitioned index with 100 partitions requires sufficient memory for four processors to sort 4,000 pages at the same time, or 16,000 pages. Si el índice con particiones está alineado, el requisito de memoria se reduce a cuatro procesadores que ordenan 40 páginas o 160 (4 * 40) páginas.If the partitioned index is aligned, the memory requirement is reduced to four processors sorting 40 pages, or 160 (4 * 40) pages. Puede usar la opción de índice MAXDOP para reducir manualmente los grados de paralelismo.You can use the MAXDOP index option to manually reduce the degrees of parallelism.

Comandos DBCCDBCC Commands

Con un número de particiones mayor, los comandos DBCC pueden tardar más tiempo en ejecutarse cuando el número de particiones aumenta.With a larger number of partitions, DBCC commands could take longer to execute as the number of partitions increases.

ConsultasQueries

Las consultas en que se usa la eliminación de particiones podrían tener un rendimiento comparable o mejorado con un número de particiones mayor.Queries that use partition elimination could have comparable or improved performance with larger number of partitions. Las consultas que no usan eliminación de particiones podrían tardar más tiempo en ejecutarse cuando el número de particiones aumenta.Queries that do not use partition elimination could take longer to execute as the number of partitions increases.

Por ejemplo, suponga que una tabla tiene 100 millones de filas y columnas A, By C.For example, assume a table has 100 million rows and columns A, B, and C.

  • En el escenario 1, la tabla se divide en 1000 particiones en la columna A.In scenario 1, the table is divided into 1000 partitions on column A.
  • En el escenario 2, la tabla se dividen en 10.000 particiones en la columna A.In scenario 2, the table is divided into 10,000 partitions on column A. Una consulta en la tabla que tenga un filtrado de cláusulas WHERE en la columna A realizará la eliminación de la partición y examinará una partición.A query on the table that has a WHERE clause filtering on column A will perform partition elimination and scan one partition. La misma consulta puede ejecutarse con mayor rapidez en el escenario 2 al haber menos filas para examinar en una partición.That same query may run faster in scenario 2 as there are fewer rows to scan in a partition. Una consulta que tenga un filtrado de cláusulas WHERE en la columna B examinará todas las particiones.A query that has a WHERE clause filtering on column B will scan all partitions. La consulta puede ejecutarse con mayor rapidez en el escenario 1 que en el escenario 2 ya que hay menos particiones para examinar.The query may run faster in scenario 1 than in scenario 2 as there are fewer partitions to scan.

Las consultas que usan operadores como TOP o MAX/MIN en columnas distintas de la columna de partición pueden experimentar un menor rendimiento con las particiones porque se deben evaluar todas las particiones.Queries that use operators such as TOP or MAX/MIN on columns other than the partitioning column may experience reduced performance with partitioning because all partitions must be evaluated.

Si ejecuta con frecuencia consultas que implican una combinación de igualdad entre dos o más tablas con particiones, sus columnas con particiones deberían ser las mismas que las columnas en las que se combinan las tablas.If you frequently run queries that involve an equi-join between two or more partitioned tables, their partitioning columns should be the same as the columns on which the tables are joined. Además, las tablas, o sus índices, deberían colocarse.Additionally, the tables, or their indexes, should be collocated. Esto significa que, o bien utilizan la misma función de partición, o bien utilizan funciones distintas que son esencialmente la misma, dado que:This means that they either use the same named partition function, or they use different ones that are essentially the same, in that they:

  • Tienen el mismo número de parámetros que se utilizan para crear particiones y los parámetros correspondientes son de los mismos tipos de datos.Have the same number of parameters that are used for partitioning, and the corresponding parameters are the same data types.
  • Definen el mismo número de particiones.Define the same number of partitions.
  • Definen los mismos valores de límite para las particiones.Define the same boundary values for partitions. De este modo, el optimizador de consultas puede procesar la combinación con mayor rapidez, porque las propias particiones se pueden combinar.In this way, the query optimizer can process the join faster, because the partitions themselves can be joined. Si una consulta combina dos tablas que no están colocadas o no tienen particiones en el campo de combinación, la presencia de particiones puede ralentizar el procesamiento de consultas en lugar de acelerarlo.If a query joins two tables that are not collocated or are not partitioned on the join field, the presence of partitions may actually slow down query processing instead of accelerate it.

Cambios de comportamiento en el cálculo de estadísticas durante operaciones de índice con particionesBehavior changes in statistics computation during partitioned index operations

A partir de SQL Server 2012 (11.x)SQL Server 2012 (11.x), las estadísticas no se crean examinando todas las filas de la tabla cuando se crea o se vuelve a generar un índice con particiones.Starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x), statistics are not created by scanning all the rows in the table when a partitioned index is created or rebuilt. En su lugar, el optimizador de consultas usa el algoritmo de muestreo predeterminado para generar estadísticas.Instead, the query optimizer uses the default sampling algorithm to generate statistics. Después de actualizar una base de datos con índices con particiones, puede observar una diferencia en los datos del histograma para estos índices.After upgrading a database with partitioned indexes, you may notice a difference in the histogram data for these indexes. Este cambio de comportamiento puede no afectar al rendimiento de las consultas.This change in behavior may not affect query performance. Para obtener estadísticas sobre índices con particiones examinando todas las filas de la tabla, use CREATE STATISTICS o UPDATE STATISTICS con la cláusula FULLSCAN.To obtain statistics on partitioned indexes by scanning all the rows in the table, use CREATE STATISTICS or UPDATE STATISTICS with the FULLSCAN clause.

TareasTasks TemaTopic
Describe cómo crear funciones de partición y esquemas de partición y cómo aplicarlos a una tabla o índice.Describes how to create partition functions and partition schemes and then apply these to a table and index. Crear tablas e índices con particionesCreate Partitioned Tables and Indexes

Puede encontrar las siguientes notas del producto en la tabla con particiones y estrategias e implementaciones de índices útiles.You may find the following white papers on partitioned table and index strategies and implementations useful.