mercredi 9 octobre 2013

Indexes and Keys

Index et les clés [AX 2012]


S'applique à: Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynamics AX 2012
Un index est une structure de base de données spécifique à une table qui accélère la récupération des lignes d'une table. Les index sont utilisés pour améliorer la performance de récupération de données et de veiller à l'existence d'enregistrements uniques. C'est à la base de données spécifique à l'optimiseur de requêtes d'utiliser les index disponibles pour faciliter la récupération de données efficace.
Les indices sont associés à une seule table et situés dans l'arborescence d'objets d'application (AOT) dans le cadre du Dictionnaire de données \ Tables de noeud sous la table spécifique.
====================================================================

Index Aperçu [AX 2012]


S'applique à: Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynamics AX 2012
Un index est une structure de base de données spécifique à une table qui accélère la récupération des lignes d'une table. Les index sont utilisés pour améliorer la performance de récupération de données et de temps en temps pour s'assurer de l'existence d'enregistrements uniques. C'est à la base de données spécifique à l'optimiseur de requêtes d'utiliser les index disponibles pour faciliter la récupération de données efficace.
Les indices sont associés à une seule table et situés dans l'arborescence d'objets d'application (AOT) dans le cadre du Dictionnaire de données \ Tables de noeud sous la table spécifique.
Comme la plupart des objets de base de données Microsoft Dynamics AX, les indices sont synchronisées avec la base de données. Une fois créés, les indices sont gérés automatiquement par le SGBD chaque fois qu'un enregistrement est inséré, mis à jour ou supprimé. Dans Microsoft Dynamics AX, un index peut être activée ou désactivée. Lorsqu'un index est désactivé, il est supprimé de la base de données et reconstruit si elle est activée ultérieurement. Pour plus d'informations sur la création d'un index, consultez Comment: créer un index .
Un index est défini par un ou plusieurs champs. Le système tente de commander l'indice en fonction du premier champ, et s'il ya plus d'un enregistrement avec la même valeur dans ce champ, le conflit de tri est résolu en regardant le champ suivant et ainsi de suite. Lors de la sélection des champs de table pour un index étudier ce qui suit:
  • Les champs qui sont souvent recherchées par un éventail.
  • Les champs qui participent fréquemment dans les jointures.
  • Les champs qui sont fréquemment utilisés à l'ordre ou un groupe de jeu de résultats.
En théorie, une table peut avoir un nombre illimité d'indices. Cependant, il est fréquent d'avoir au plus quelques indices permis parce que chaque insert, update et delete provoque chaque index à mettre à jour et peuvent affecter les performances.

Il existe deux types d'indices: unique et non-unique. Si un index est unique est définie par l'indice AllowDuplicates la propriété. Lorsque cette propriété est définie sur Non, un index unique est créé. La base de données utilise l'indice unique pour s'assurer que pas de valeurs-clés identiques apparaissent. La base de données vous empêche d'insérer des enregistrements avec des valeurs de clés dupliquées en rejetant l'insert
Réglage de l'indice de AllowDuplicates propriété sur Oui crée un index non-uniques. Ces indices vous permettent de saisir des valeurs en double pour les champs indexés et sont utilisés pour des raisons de performances.
RemarqueRemarque
Un champ d'annotation du type de données ou le conteneur ne peut pas être utilisée dans un index.

Index System

Microsoft Dynamics AX nécessite un index unique sur chaque table si il n'y a pas d'index sur une table ou tous les index sont désactivés, un index système est automatiquement créé.L'indice du système est créé sur les champs RECID et DataAreaId si le champ DataAreaId existe. Sinon, l'indice du système est créé sur le champ RECID. Vous pouvez voir les index système dans la base de données, mais ils ne sont pas visibles dans l'AOT.
S'il ya des index sur une table, mais aucun d'entre eux sont uniques, le runtime estime la longueur de la clé moyenne des indices existants, choisit l'index avec la plus petite longueur de clé et ajoute la colonne RECID pour créer un index unique.

=================================================================

Comment: créer un index [AX 2012]


S'applique à: Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynamics AX 2012
Un indice de tableau est un objet de base de données que vous pouvez créer dans l'arborescence d'objets d'application (AOT) afin d'optimiser l'accès aux enregistrements de la table.
RemarqueRemarque
Il est recommandé que vous définissez seulement autant d'index que vous avez besoin pour des performances de base de données optimale.
Pour spécifier un index dans un select déclaration, utilisez les index mot clé. Pour plus d'informations, voir Sélectionner syntaxe de l'instruction .
Pour gérer les modifications apportées aux objets AOT, un système de contrôle de version est disponible. Pour plus d'informations, consultez Système de contrôle de version .

  1. Dans l'AOT, localisez la table que vous souhaitez ajouter un index, cliquez-droit sur ​​l' index nœud, puis cliquez sur Nouvel index .
  2. Cliquez-droit sur ​​le nouvel indice, puis cliquez sur Nouveau champ .
  3. Cliquez-droit sur ​​le champ que vous avez ajouté à l'étape 3, cliquez sur Propriétés , puis sélectionnez un champ de la DataField liste de propriétés.
    Répétez les étapes 2-3 pour ajouter d'autres champs à l'index.
    L'ordre des champs détermine l'ordre de tri des documents. Si un conflit survient tri, les données sont triées sur le champ suivant.
    RemarqueRemarque
    Tout champ de type chaîne se transforme en minuscules.
  4. Cliquez-droit sur ​​le nouvel indice, puis cliquez sur Propriétés .
  5. Indiquez si l'index est unique ou non unique en effectuant l'une des actions suivantes:
    • Pour spécifier que l'index est un index non unique, vérifiez que le AllowDuplicates propriété est définie sur Oui . Il est recommandé de créer des index non-uniques pour des performances de base de données optimale.
      RemarqueRemarque
      Si vous incluez un RECID champ dans un indice, l'indice sera unique. Lorsque vous incluez ce domaine et définissez la propriété sur Oui , le compilateur Microsoft Dynamics AX affiche un avertissement.
    • Pour spécifier que l'index est unique, réglez le AllowDuplicates propriété à Pas . Lorsque l'indice est unique, vous ne pouvez pas insérer des enregistrements avec des valeurs de clés dupliquées. Un avertissement est émis à l'utilisateur s'il tente d'insérer des enregistrements avec des valeurs en double.
  6. Pour désactiver l'index, réglez le Enabled propriété à Pas . Lorsque vous désactivez un indice, il est supprimé de la base de données.
    Vous pouvez également supprimer un index par clic droit sur ​​l'index, puis en cliquant sur ​​Supprimer .
  7. Modifier les propriétés supplémentaires au besoin.

    =============================================================


    Touches de table: Surrogate, suppléant, le remplacement, primaire et étrangères [AX 2012]


    S'applique à: Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynamics AX 2012
    Cette rubrique décrit plusieurs termes et concepts de clés sur des tables de données, telles qu'elles s'appliquent à Microsoft Dynamics AX.
    Toutes les touches sont des touches uniques, ce qui signifie qu'ils interdire les doublons et les valeurs NULL.

    Cette section décrit la terminologie pour les touches qui apparaissent dans les noms de propriété dans l'AOT Propriétés fenêtre.

    Clé primaire

    Une clé primaire est un type de clé. L'autre type de clé est une clé alternative. Il ya un maximum d'une clé primaire par table, alors qu'une table peut avoir plusieurs clés alternatives. La clé primaire est généralement le type de clé que d'autres tables, appelées tables de l'enfant, se réfèrent quand un champ de clé étrangère dans les autres tables ont besoin d'un identifiant relationnel.
    À partir de Microsoft Dynamics AX 2012, la clé primaire pour chaque nouvelle table est toujours appliquée par un indice qui a exactement un champ. Le champ est en général l'un d'un nombre incrémenté ou un nombre tout à fait inutile qui est générée par le système. Pour les nouveaux tableaux de la valeur par défaut est une clé primaire sur la base du RECIDdomaine. Ceci est représenté en tant que substitut clé dans l'interface utilisateur.
    Le tableau suivant décrit le PrimaryIndex propriété et d'autres propriétés importantes qui sont liées à des touches.
    Propriété
    Description
    PrimaryIndex
    La liste déroulante contient la clé de substitution ainsi que tous les index sur la table qui a son AlternateKey propriété définie sur Oui .
    CreateRecIdIndex
    Cette propriété détermine si le système crée un index unique sur la RECID domaine. La valeur par défaut est Oui . C'est la base de la clé de substitution.
    Aucun autre champ est ajouté à cet indice, pas même DataAreaId .
    ReplacementKey
    La liste déroulante contient tous les indices qui a son AlternateKey propriété définie sur Oui .
    Vous pouvez changer la valeur à blanc par défaut à un indice dont les valeurs au sein de chaque champ pour l'enregistrement de fournir un nom ou un autre surnom qui est significatif pour les gens. Si un ReplacementKey est choisie, ses champs peuvent apparaître sur les formes d'identifier utilement chaque enregistrement.
    Le ReplacementKey devrait être un ensemble de champs qui représentent la clé naturelle.
    ClusterIndex
    Le ClusterIndex valeur est donnée au système de base de données Microsoft SQL Server sous-jacente comme un choix d'optimisation des performances. Ce choix contrôle généralement la séquence physique dans lequel les enregistrements sont stockés dans la base de données sous-jacente.
    L'image d'AOT qui suit présente les propriétés de la table qui sont liés à des touches.
    Propriétés de la table CustTable
    Propriétés de la table de démonstration AtomicElement

    Alternate Key

    Une table peut avoir plusieurs clés alternatives. De préférence une clé alternative peut basculer sur étant la clé primaire, si la clé de remplacement est constitué d'un seul domaine.
    Une table peut référencer la clé alternative d'une autre table. Cependant, il est plus fréquent pour une table de désigner la clé primaire d'une autre table. En option, une clé alternative ne peut être choisi comme ReplacementKey d'une table.
    Dans la pratique, chaque clé alternative repose sur un index unique pour sa mise en œuvre et d'application. Cependant, un index unique ne suffit pas à faire une clé alternative. LeAlternateKey propriété doit être définie à Oui pour faire un index unique soit une clé alternative.
    Le tableau suivant décrit les propriétés du nœud AOT pour un index.
    Propriété
    Description
    AllowDuplicates
    Non signifie que les champs combinés de l'indice doivent ensemble faire une valeur dans chaque enregistrement dont aucun autre enregistrement a.
    AlternateKey
    Oui signifie que d'autres tables peuvent créer des relations de clé étrangère qui référence cette touche, comme une alternative à référençant la clé primaire.
    Index avec deux ou plusieurs champs ne peuvent pas avoir leur AlternateKey valeur de propriété est définie sur Oui .
    ValidTimeStateKey
    Une clé qui est marqué comme une clé d'état de temps valide n'est pas une clé candidate pour les tables enfants pour référence dans leurs relations de clé étrangère. Au lieu de cela, cette touche sert à gérer des données actualisées efficace dans sa propre table.
    La valeur par défaut est Non . Ce champ peut être Oui uniquement si le ValidTimeStateFieldType propriété est oui sur la table. Oui signifie que cette clé contient la ValidFrom et validTo champs.
    Le ValidTimeStateKey propriété ne peut pas être réglé sur Oui lorsque le AlternateKey propriété est définie sur Non .
    L'image suivante montre que la SymIdx index est une clé alternative. Son AlternateKey propriété est définie sur Oui .
    Propriétés de l'index du Parti sur CustTable
    Les propriétés de l'indice SymIdx

    Relation

    Dans Microsoft Dynamics AX une relation représente une clé étrangère. L'image suivante montre que la AtomStIdx clé alternative de la AtomicState table parent est référencé par cette clé étrangère de la AtomicElement table enfant. La clé étrangère comprend le AtomicStateName champ.
    Propriétés du rapport BankAccount sur CustTable
    Les propriétés de la relation AtomStFkyRel

    L'image suivante montre le AtomStIdx clé alternative sur le AtomicState table. Les précédents AtomStFkyRel référence de la relation de cette clé alternative.
    AtomStIdx clé alternative sur la table AtomicState
    Les propriétés de la clé alternative AtomStIdx et index
    Pour plus d'informations sur les propriétés des relations de table, voir Propriétés des liens de la table .

    ReplacementKey

    Une clé de remplacement est une clé alternative que le système peut afficher sur les formes au lieu d'une valeur de clé primaire numérique de sens. Chaque table peut avoir un maximum d'une clé de remplacement.
    La clé de remplacement est choisie en réglant le ReplacementKey bien sur la table. La liste déroulante propose chaque clé alternative comme une valeur disponible. Dans l'image précédente des AtomicElement propriétés de la table, le ReplacementKey propriété est SymIdx .

    Dans Microsoft Dynamics AX, il ya d'autres termes qui sont utilisés pour décrire les clés de table. Ces termes n'apparaissent pas comme noms de propriété dans Microsoft Dynamics AX.Ces termes sont décrits dans le tableau suivant.
    Terme
    Description
    clé étrangère
    Dans Microsoft Dynamics AX, un nœud AOT sous MyTable > Relations représente une clé étrangère. Pour plus d'informations, consultez la précédente relations dans cette rubrique.
    clé naturelle
    Une clé dont la valeur a un sens pour les gens. La plupart des touches de remplacement sont des clés naturelles.
    clé de substitution
    Une clé dont la valeur n'a pas de sens pour les gens. Un grand nombre généré par le système, comme RECID, pourrait être une clé de substitution.
    clé unique
    A terme général qui s'applique aux clés primaires et les clés alternatives. Elle ne s'applique pas aux clés étrangères. Ce terme souligne que toutes les valeurs pour une clé donnée doit être unique dans une table. Tous les champs d'une clé unique doit être non annulable.

    Full Text Index Aperçu [AX 2012]


    S'applique à: Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynamics AX 2012
    Un index de texte intégral contient des informations de localisation sur chaque mot significatif dans un champ de chaîne d'un tableau. Certaines requêtes peuvent utiliser cette information pour fonctionner plus efficacement et de compléter beaucoup plus tôt. Ce sont des questions que la recherche pour les mots qui sont incorporés dans le milieu de champs de chaîne
    Un indice régulière sur un champ de chaîne longue peut aider une requête complète rapidement que si les recherches de requête pour le mot qui se trouve au début du champ de chaîne.Dans X + + SQL cela se fait avec le comme mot clé et le * caractère générique, comme dans le code phrase comme "* diamant *" .

    Les rubriques suivantes fournissent des informations sur la création et l'utilisation des index en texte intégral.

    Le tableau suivant présente les caractéristiques et donne des informations générales sur les index en texte intégral, et sur les recherches en texte intégral qui utilisent ces indices.
    Traits
    Les détails d'arrière-plan
    Microsoft SQL Server mots-clés.
    La fonction d'index de texte intégral de Microsoft Dynamics AX s'appuie sur le logiciel sous-jacent de gestion de base de données pour mettre en œuvre la fonctionnalité. Le mot-clé FreeText est envoyé au système de base de données sous-jacente SQL Server.
    Les espaces sont traités comme booléenne implicite OU opérateurs.
    Il ya un espace dans le paramètre de chaîne en appel queryBRange4.value («diamant sans fondement"); . L'espace entre le diamant et sans fondement est interprétée comme un booléen OR .
    Issu est pris en charge.
    Le système Microsoft Dynamics AX s'appuie sur la solution de gestion de base de données sous-jacent pour endiguer la fonctionnalité lorsque vous exécutez une requête qui utilise un index de texte intégral. Un égrappoir génère une variété de formes fléchies d'un mot pour augmenter les chances pour un match.
    Stemmers sont spécifiques à chaque langue. Par exemple, l'égrappoir pour l'anglais ne peut pas être utilisé pour l'allemand. En anglais, si l'égrappoir est donné le mot conversation, il générerait des mots similaires tels pourparlers, a parlé, et parler. Pour plus d'informations, consultez la documentation de votre produit de gestion de base de données, comme Oracle ou Microsoft SQL Server.
    rupture de Word est pris en charge.
    Le système Microsoft Dynamics AX s'appuie sur la solution de gestion de base de données sous-jacente pour la fonctionnalité de séparateur de mots lorsque vous insérez des données dans un champ qui fait partie d'un index de texte intégral. En anglais, si un séparateur de mots est donné site, cela générerait le web des mots et des sites.
    Pour plus d'informations, consultez la documentation de votre produit de gestion de base de données, comme Oracle ou Microsoft SQL Server.
    Pas de jokers sont disponibles.
    Il n'y a pas de caractères génériques disponibles pour la recherche en texte intégral. Les * et ? génériques qui sont disponibles avec la X + + commemot-clé ne sont pas disponibles pour la recherche en texte intégral.
    TableGroup propriété.
    Une table peut avoir un index de texte complet seulement si l' TableGroup propriété est définie principal ou groupe sur la table.
    Maximum d'un index de texte intégral par table.
    Vous pouvez créer un maximum d'un index de texte intégral par table.
    Des types de champs supportés.
    Vous pouvez avoir plusieurs colonnes de type chaîne dans un seul index de texte intégral. En outre, le stringsize propriété du champ de chaîne peut être réglé sur un certain nombre ou à (Memo) .

    Comment: créer un index de texte intégral [AX 2012]


    S'applique à: Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynamics AX 2012
    Cette rubrique décrit comment créer un index de texte intégral sur une table dans Microsoft Dynamics AX.
    Un index de texte intégral contient des informations sur chaque mot significatif dans le champ de chaîne indexée, non seulement pour la parole au début de la chaîne. Cela permet un accès rapide aux lignes des tables qui ont un mot de cible embarquée dans un champ de chaîne.
    Vous pouvez créer un maximum d'un index de texte intégral par table. Vous pouvez avoir plusieurs colonnes de type chaîne dans un seul index de texte intégral. En outre, le stringsizepropriété du champ de chaîne peut être réglé sur un certain nombre ou à (Memo) . En outre, le champ d'index de texte intégral peut être basée sur un type de données étendu.

    Cette section décrit comment créer un index de texte intégral sur une table en utilisant l'AOT.
    1. Créer une table nommée FtiTable avec deux champs de chaîne nommée champ1 et champ2 . Si vous avez besoin d'informations sur la façon de créer une table, consultezComment: créer des tableaux .
    2. Pour un meilleur contrôle, augmenter le stringsize propriété de sa valeur par défaut à 64 sur les deux champs.
    3. Réglez le TableGroup propriété de principal sur la FriTable table.
      RemarqueRemarque
      Une table peut avoir un index de texte complet seulement si l' TableGroup propriété est définie principal ou groupe sur la table.
    4. Développer le FtiTable nœud, cliquez-droit sur ​​le Full Text Index nœud, puis cliquez sur Nouvel index de texte intégral . Cela crée un nœud nommé FullTextIndex1 .
    5. Cliquez-droit sur ​​le FullTextIndex1 nœud, puis cliquez sur Nouveau champ .
    6. Cliquez sur le nouveau nœud de champ d'index afin que vous puissiez voir ses propriétés dans la Propriétés fenêtre.
    7. Dans la Propriétés fenêtre pour le nouveau champ d'index, réglez le DataField propriété de Field2 .
    8. Répétez les trois étapes précédentes pour ajouter Champ1 comme une deuxième colonne de FullTextIndex1 . Ou au contraire, vous pouvez faire glisser les FtiTable > ChampsChamp1 noeud et déposez-le sur le FullTextIndex1 nœud.

    Pour plus d'informations sur la façon de créer des requêtes qui bénéficient d'un index de texte intégral, voir Comment: utiliser un index de texte intégral .

    ==========================================================================

    Comment: utiliser un index de texte intégral [AX 2012]



    S'applique à: Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynamics AX 2012
    Cette rubrique décrit comment créer une requête qui utilise un index de texte intégral dans Microsoft Dynamics AX. Un index de texte intégral peut améliorer la vitesse de requêtes de recherche pour les mots qui sont incorporés dans la chaîne et les champs mémo sur les tables.
    Le QueryRange classe a un rangeType méthode. Vous pouvez diriger un QueryRange objet à utiliser l'index de texte complet en passant le FullText QueryRangeType :: valeur ENUM à larangeType méthode.
    Si la valeur que vous recherchez est une phrase de deux mots avec un espace entre les mots, le système traite l'espace comme un opérateur booléen OR.
    X + + certains états ne peuvent pas utiliser un index de texte intégral.

    La condition sine qua non pour le présent sujet est la suivante:
    • L'exemple de code dans le présent sujet dépend de la table et index en texte intégral qui sont précisées dans Comment: créer un index de texte intégral . Vous pouvez comprendre l'exemple de code sans créer la table et index en texte intégral. Mais si vous voulez exécuter l'exemple de code, vous devez d'abord créer la table et index en texte intégral.

    Ce qui suit X + + exemple de code utilise un index de texte complet qui existe sur une table et sur le terrain qu'elle requêtes.
    RemarqueRemarque
    La ligne de code qui mentionne QueryRangeType :: FullText est ce qui rend cet exemple utiliser l'index de texte intégral.
    GmFTIndexQueryJob6 static void (args _args)
    {
        FtiTable recFtiTable; / / divulgué au sujet des prérequis.
    
        Requête query2;
        QueryBuildDataSource queryBDSource3;
        QueryBuildRange queryBRange4;
        QueryRun queryRun5;
    
        print "lancer le travail.";
    
        / / S'assurer que les données de test approprié est dans le tableau.
        delete_from recFtiTable;
        recFtiTable.Field1 = "Shine on vous diamant fou.";
        recFtiTable.Field2 = "Record 1.";
        recFtiTable.insert ();
        recFtiTable.Field1 = "Et s'il n'y a pas de place sur la colline.";
        recFtiTable.Field2 = "fiche 2.";
        recFtiTable.insert ();
    
        / / Construire et exécuter une requête qui utilise
        / / Le QueryRangeType :: Texte intégral valeur ENUM.
        query2 = new Query ();
        queryBDSource3 = query2.addDataSource (tableNum (FtiTable));
        queryBRange4 = queryBDSource3.addRange (fieldNum (FtiTable, Champ1));
    
        queryBRange4.rangeType (QueryRangeType :: Texte intégral);
    
        / / Le caractère espace est considéré comme un opérateur booléen OR.
        queryBRange4.value («diamant sans fondement");
    
        / / Boucle à travers les enregistrements renvoyés par la requête.
        queryRun5 = new QueryRun (query2);
        while (queryRun5.next ())
        {
            recFtiTable = queryRun5.get (tableNum (FtiTable));
            print "--------";
            print "Champ1 ==" + recFtiTable.Field1;
            print "Field2 ==" + recFtiTable.Field2;
        }
        print "mettre fin à l'emploi.";
        pause;
    }
    

Aucun commentaire:

Enregistrer un commentaire