Tous les produits
Search
Centre de documentation

Lindorm:Plusieurs index de recherche pour une seule table (Aperçu public)

Dernière mise à jour :Aug 11, 2026

Lorsqu'une table large doit répondre à plusieurs modèles de requête, chacun accédant à des combinaisons de colonnes différentes, un seul index de recherche ne peut pas couvrir efficacement tous les chemins d'accès. Les index de recherche multiples vous permettent de définir jusqu'à cinq index indépendants sur une même table primaire, chacun couvrant un ensemble de colonnes différent. Lindorm achemine automatiquement chaque requête vers l'index le plus adapté.

Cette fonctionnalité est en aperçu public. Pour l'activer, contactez le support technique Lindorm sur DingTalk (ID du groupe : s0s3eg3 ).

Prérequis

Avant de commencer, assurez-vous que :

  • Le moteur LindormTable est en version 2.8.2.3 ou ultérieure.

  • Le moteur Lindorm LTS est en version 3.8.12.5 ou ultérieure.

Pour vérifier ou mettre à jour la version de votre moteur, consultez la rubrique Mise à jour de la version mineure.

Limitations

  • Une table primaire prend en charge un maximum de 5 index de recherche.

  • Tous les index de recherche d'une même table primaire doivent avoir des noms uniques. Les noms d'index ne doivent pas entrer en conflit avec d'autres types d'index sur la même table.

Créer plusieurs index de recherche

Les étapes suivantes expliquent comment créer une table large, y construire plusieurs index de recherche, y écrire des données et interroger ces données via les index.

Étape 1 : Créer une table large

create table testTable (pk int, c1 int, c2 varchar, c3 long, primary key(pk));

Étape 2 : Créer plusieurs index de recherche sur la table

Les colonnes et les propriétés des index peuvent se chevaucher d'un index à l'autre.

create index idx1 using search on testTable (c1,c2);
create index idx2 using search on testTable (c3);
create index idx3 using search on testTable (c1,c2,c3);

Étape 3 : Écrire des données

Insérez ou mettez à jour les lignes dans la table large. Les données sont automatiquement synchronisées vers chaque index de recherche.

upsert into testTable(pk,c1,c2,c3) values (1,1,'1',1);
upsert into testTable(pk,c1,c2,c3) values (2,2,'2',2);
upsert into testTable(pk,c1,c2,c3) values (3,3,'3',3);
upsert into testTable(pk,c1,c2,c3) values (4,4,'4',4);

Étape 4 : Interroger les données

Lindorm sélectionne automatiquement un index de recherche approprié en fonction des colonnes de la requête. Lorsque plusieurs index couvrent la même requête, le système en choisit un.

Requête sur les trois colonnesidx3 est sélectionné car il couvre c1, c2 et c3 :

select * from testTable where c1>0 and c2>'0' and c3>0;

Requête sur deux colonnes — soit idx1 soit idx3 est sélectionné, puisque tous deux couvrent c1 et c2 :

select * from testTable where c1>0 and c2>'0';

Requête sur une colonne — soit idx2 soit idx3 est sélectionné, puisque tous deux couvrent c3 :

select * from testTable where c3>0;

Étape 5 : Spécifier explicitement un index (facultatif)

Utilisez la syntaxe HINT pour forcer l'utilisation d'un index spécifique lors d'une requête, en remplaçant la sélection automatique :

select /*+ _l_force_index_('idx1') */ * from testTable where c1>0 and c2>'0';

Étape 6 : Gérer l'état des index

Utilisez ALTER INDEX pour contrôler indépendamment l'état de chaque index :

alter index idx1 on testTable inactive;
alter index idx1 on testTable disabled;

Le tableau suivant décrit chaque valeur d'état et son effet sur les requêtes et l'indexation :

État Interrogeable Données indexées Remarques
ACTIVE Oui Oui État de fonctionnement par défaut.
INACTIVE Non Oui Suspendu pour les requêtes, mais continue d'indexer les écritures.
DISABLED Non Non Arrête l'indexation des écritures. Impossible de modifier cet état vers un autre — exécutez la commande REBUILD pour réactiver l'index.