首頁(yè)
云原生數(shù)據(jù)庫(kù) PolarDB
云原生數(shù)據(jù)庫(kù)PolarDB MySQL版
用戶(hù)指南
分區(qū)表
分區(qū)選擇策略
何時(shí)選擇虛擬列分區(qū)
何時(shí)選擇虛擬列分區(qū)
更新時(shí)間:
虛擬列分區(qū)可以對(duì)表達(dá)式進(jìn)行分區(qū),該表達(dá)式可能使用來(lái)自其他列的數(shù)據(jù),并使用這些列進(jìn)行計(jì)算。
虛擬列分區(qū)支持所有分區(qū)類(lèi)型。如果查詢(xún)條件不是某一個(gè)列上的原始數(shù)據(jù),而是經(jīng)過(guò)計(jì)算過(guò)的,又不想添加一個(gè)單獨(dú)的列來(lái)存儲(chǔ)計(jì)算過(guò)的正確值,可以考慮添加一個(gè)虛擬列。
在以下示例的sales
表中,客戶(hù)的確認(rèn)號(hào)包含兩個(gè)字符的省市名稱(chēng),作為取車(chē)的地點(diǎn),租車(chē)分析通常評(píng)估地區(qū)模式,因此可以按照省市劃分:
CREATE TABLE `sales` (
`id` int(11) NOT NULL,
`customer_id` int(11) NOT NULL,
`confirmation_number` varchar(12) NOT NULL,
`order_id` int(11) DEFAULT NULL,
`order_type` varchar(10) DEFAULT NULL,
`start_date` date NOT NULL,
`end_date` date DEFAULT NULL,
`province` varchar(12) GENERATED ALWAYS AS (substr(`confirmation_number`,9,2)) VIRTUAL
) ENGINE=InnoDB
PARTITION BY LIST COLUMNS(province)
SUBPARTITION BY HASH (`customer_id`)
SUBPARTITIONS 16
(PARTITION p_cn_north VALUES IN ('BJ','TJ','HB','NMG'),
PARTITION p_cn_south VALUES IN ('GD','GX','HN'),
PARTITION p_cn_east VALUES IN ('SH','ZJ','JS'));
在上述示例中,列省市定義為從確認(rèn)號(hào)派生的虛擬列。虛擬列不需要任何存儲(chǔ),虛擬列支持行移動(dòng)。如果虛擬列在另一個(gè)分區(qū)中計(jì)算出不同的值,則數(shù)據(jù)庫(kù)將一行遷移到另一個(gè)分區(qū)。
文檔內(nèi)容是否對(duì)您有幫助?