Composite list-list partitioning is useful for large tables that are often accessed on different dimensions. You can specifically map rows to partitions on those dimensions based on discrete values.
Example 3-12 shows an example of a very frequently accessed current_inventory
table. The table is constantly updated with the current inventory in the supermarket supplier's local warehouses. Potentially perishable foods are supplied from those warehouses to supermarkets, and it is important to optimize supplies and deliveries. The table has local indexes on warehouse_id
and product_id
.
Example 3-12 Creating a table with composite list-list partitioning
CREATE TABLE current_inventory ( warehouse_id NUMBER , warehouse_region VARCHAR2(2) , product_id NUMBER , product_category VARCHAR2(12) , amount_in_stock NUMBER , unit_of_shipping VARCHAR2(20) , products_per_unit NUMBER , last_updated DATE ) PARTITION BY LIST (warehouse_region) SUBPARTITION BY LIST (product_category) SUBPARTITION TEMPLATE ( SUBPARTITION perishable VALUES ('DAIRY','PRODUCE','MEAT','BREAD') , SUBPARTITION non_perishable VALUES ('CANNED','PACKAGED') , SUBPARTITION durable VALUES ('TOYS','KITCHENWARE') ) ( PARTITION p_northwest VALUES ('OR', 'WA') , PARTITION p_southwest VALUES ('AZ', 'UT', 'NM') , PARTITION p_northeast VALUES ('NY', 'VM', 'NJ') , PARTITION p_southeast VALUES ('FL', 'GA') , PARTITION p_northcentral VALUES ('SD', 'WI') , PARTITION p_southcentral VALUES ('OK', 'TX') ); CREATE INDEX warehouse_id_ix ON current_inventory(warehouse_id) LOCAL PARALLEL NOLOGGING; CREATE INDEX product_id_ix ON current_inventory(product_id) LOCAL PARALLEL NOLOGGING;