AnalyticDB for MySQL支援使用MAX_PT函數查詢MaxCompute分區外表中一級分區的最大值,避免掃描所有分區,顯著提升查詢處理速度及整體計算效率。
前提條件
AnalyticDB for MySQL集群核心版本需為3.2.4.0及以上版本。
說明請在雲原生資料倉儲AnalyticDB MySQL控制台集群資訊頁面的配寘資訊地區,查看和升級核心版本。
請在雲原生資料倉儲AnalyticDB MySQL控制台的集群資訊頁面的配寘資訊地區,查看和升級核心版本。
MaxCompute專案需要AnalyticDB for MySQL叢集位於同一地區。
注意事項
MAX_PT函數僅適用於MaxCompute外表。內表或其他類型的外表,使用MAX_PT函數查詢時會報錯。建立MaxCompute外表,具體方法請參見CREATE EXTERNAL TABLE。MaxCompute外表必須為分區表,且至少有一個分區資料不為空白,否則
MAX_PT函數將執行失敗。
文法
MAX_PT(<table_full_name>)參數說明:
<table_full_name>:MaxCompute分區外表的表名。格式可以為<database>.<tableName> 或 <tableName>。僅支援STRING資料類型。
傳回值說明:
返回一級分區的最大值(按字母順序排序)。傳回值類型取決於MaxCompute外表中定義的分區列類型,支援BOOLEAN、BIGINT和STRING資料類型。
樣本
假設customer外表的結構如下,dt列為分區列,該表包含20241209、20241210、20241211三個分區。
CREATE EXTERNAL TABLE IF NOT EXISTS customer (
id int,
name varchar(1023),
age int,
dt STRING
) ENGINE='ODPS'
TABLE_PROPERTIES='{
"accessid":"LTAILd4****",
"endpoint":"http://service.cn-hangzhou.maxcompute.aliyun.com/api",
"accesskey":"4A5Q7ZVzcYnWMQPysX****",
"partition_column":"dt",
"project_name":"test_adb",
"table_name":"person"
}';查詢customer外表中最大分區的記錄數。
SELECE COUNT(*) FROM customer WHERE dt=MAX_PT('customer');AnalyticDB for MySQL在查詢MaxCompute外表時,僅需訪問20241211的分區。這種方法避免了全面掃描所有分區,顯著提高了查詢處理的速度和整體計算效率。