Rows in a range-partitioned table or index are distributed among partitions according to values in the partitioning key columns. The partitioning column values of each row are compared with a set of upper and lower bounds to determine the partition to which the row belongs.
Every partition has an inclusive upper bound, which is specified by the values <= clause when the partition is created.
Every partition except the first has a noninclusive lower bound, which is specified implicitly by the values <= clause on the next-lower partition.
Range partitioning is particularly useful for high-performance applications in both OLTP and decision-support environments. Select ranges carefully so that rows are assigned equally to all partitions—knowledge of the data distribution of the partition-key columns is crucial to balancing the load evenly among the partitions.
Range partitions are ordered; that is, each succeeding partition must have a higher bound than the previous partition.