Tous les produits
Search
Centre de documentation

Lindorm:Index de recherche multiples pour une seule table (Aperçu public)

Dernière mise à jour :Sep 06, 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 Mise à jour de la version mineure.

Limitations

  • Une seule 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 ceux d'autres types d'index sur la même table.

Créer plusieurs index de recherche

Les étapes suivantes détaillent la création d'une table large, la construction de plusieurs index de recherche, l'écriture de données et leur interrogation via ces 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 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 avec 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.

Interroger les trois colonnes — idx3 est sélectionné car il couvre c1, c2 et c3 :

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

Interroger deux colonnes — soit idx1 soit idx3 est sélectionné, puisque les deux couvrent c1 et c2 :

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

Interroger une colonne — soit idx2 soit idx3 est sélectionné, puisque les 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 pour 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 de l'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 Notes
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 passer à un autre état — exécutez la commande REBUILD pour réactiver l'index.