Cette rubrique décrit les index intelligents intégrés de ApsaraDB for SelectDB et leur utilisation.
Informations générales
Les index permettent de filtrer ou d'interroger rapidement les données. ApsaraDB for SelectDB prend en charge les types d'index suivants :
Index intelligents intégrés, notamment les index zone map et les index de préfixe.
Index secondaires personnalisés, tels que les index inversés, les index bitmap, les index Bloom filter et les index NGram Bloom filter. Pour plus d'informations, consultez Index inversé, Index bitmap, Index Bloom filter et Index NGram Bloom filter.
Index zone map
L'index zone map regroupe les informations d'indexation générées automatiquement pour chaque colonne du stockage orienté colonne, incluant les valeurs minimales, maximales et le nombre de valeurs NULL. ApsaraDB for SelectDB crée et gère ces index automatiquement.
Index de préfixe
Contrairement aux bases de données traditionnelles, ApsaraDB for SelectDB est une base de données OLAP (traitement analytique en ligne) reposant sur une architecture MPP (traitement massivement parallèle). Elle traite de grands volumes de données grâce à une forte concurrence et exploite les schémas d'index pour accélérer les requêtes.
Dans ApsaraDB for SelectDB, les données adoptent une structure similaire à la SSTable (Sorted String Table). Cette structure ordonnée trie et stocke les données selon des colonnes spécifiques, ce qui permet d'interroger efficacement les données via les colonnes de tri.
Pour les modèles de clés Aggregate, Unique et Duplicate, le stockage sous-jacent trie et conserve les données selon les colonnes définies dans les instructions AGGREGATE KEY, UNIQUE KEY et DUPLICATE KEY lors de la création des tables. L'index de préfixe permet ensuite d'accélérer les requêtes basées sur les colonnes de préfixe spécifiées après le tri.
Exemples
L'exemple suivant utilise les 36 premiers octets d'une ligne de données comme index de préfixe. Les index de préfixe sont tronqués lorsque les données sont de type VARCHAR. Exemple :
-
Pour le schéma ci-dessous, l'index de préfixe correspond à user_id (8 octets) + age (4 octets) + message (préfixe de 20 octets).
ColumnName
Type
user_id
BIGINT
age
INT
message
VARCHAR(100)
max_dwell_time
DATETIME
min_dwell_time
DATETIME
Spécifier le préfixe de l'index comme condition de requête permet d'accélérer cette dernière. Exécutez les instructions suivantes :
Exemple 1 :
SELECT * FROM table WHERE user_id=1829239 and age=20;Exemple 2 :
SELECT * FROM table WHERE age=20;La requête de l'exemple 1 s'exécute beaucoup plus rapidement que celle de l'exemple 2. Lors de la création d'une table, triez les colonnes dans l'ordre approprié pour améliorer l'efficacité des requêtes.
-
Dans le schéma suivant, l'index de préfixe correspond à user_name (20 octets). Comme les données sont de type VARCHAR, l'index ne contient pas 36 octets et se trouve tronqué.
ColumnName
Type
user_name
VARCHAR(20)
age
INT
message
VARCHAR(100)
max_dwell_time
DATETIME
min_dwell_time
DATETIME
Modifier un index de préfixe à l'aide d'une vue matérialisée
Les colonnes d'une table étant triées selon un ordre défini lors de sa création, une table ne possède qu'un seul index de préfixe. Si vos requêtes portent sur des colonnes non couvertes par cet index, les performances risquent de ne pas répondre à vos exigences métier. Créez alors une vue matérialisée pour modifier l'ordre des colonnes. Pour plus d'informations, consultez Vue matérialisée synchrone.