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.