Temporäre Tabellen zur Datenoptimierung erstellen oder ändern

Abgeschlossen

Das System speichert InMemory-Tabellen im Speicher, sodass sie für eine kleine Anzahl von Datensätzen hilfreich sind. Sie können in einer Abfrage keine InMemory-Tabellen verwenden, da es diese auf dem SQL Server nicht gibt. Datensätze in einer temporären Tabelle des Typs InMemory sind vorhanden, solange das Objekt existiert, in dem Sie die Tabelle erstellen.

Im folgenden Code sehen Sie ein Beispiel zum Einfügen von Daten in eine temporäre Tabelle.

    public static void main(Args _args)
    {
        SalesShippingLabelTmp       salesShippingLabelTmp;

        ttsbegin;

        salesShippingLabelTmp.Label = 1;
        salesShippingLabelTmp.Name  = 'Finance and operations apps';
        salesShippingLabelTmp.insert();

        ttscommit;

        while select salesShippingLabelTmp
            order by Label
        {
            Info(strFmt('%1 %2', salesShippingLabelTmp.Label, salesShippingLabelTmp.Name));
        }
    }

Das Codebeispiel ähnlich des Codes für eine normale Tabelle würde erscheinen. Der Bereich für InMemory-Tabellen hängt davon ab, wie Sie dies deklarieren. Wenn in einer Methode deklariert wurde, ist ihr Anwendungsbereich nur auf die Methode beschränkt.

Hinweis

Sie können eine InMemory-Tabelle auf allen Ebenen deklarieren, damit es in den Anwendungsbereich einer Klasse oder eines Formulars fällt.

Sie können die InMemory-Tabellen von einem Objekt zu einem anderen verbinden mit der Methode setTempData. Dadurch wird eine neue Instanzverknüpfung erstellt:

        SalesShippingLabelTmp salesShippingLabelTmp2;
 
        salesShippingLabelTmp2.setTmpData(salesShippingLabelTmp);

Sie können alle Tabellen als InMemory-Tabelle verwenden, indem Sie die setTmp-Methode von salesShippingLabelTmp2.setTmp(); verwenden.

Folgendes wird benötigt, um eine InMemory-Tabelle als Formulardatenquelle zu verwenden:

  • Die Tabelle InMemory als Formulardatenquelle hinzufügen
  • Verwenden Sie die setTempData-Methode, um Daten für den Datensatz für die Formulardatenquelle in der Init-Methode für die InMemory-Tabellenformulardatenquelle zu konfigurieren:
    [DataSource]
    class SalesShippingLabelTmp
    {
        public void init()
        {
            super();
            salesShippingLabelTmp.setTmpData(mySalesCalcLabel.parmSalesShippingLabelTmp());
        }
    }

Im Codebeispiel wird gezeigt, wie InMemory-Tabellendaten in eine Formulardatenquelle eingefügt werden. Wenn Sie die Methode setTmpData in einer anderen Methode als Init verwenden, folgen Sie ihr mit executeQuery auf der Datenquelle.

Eine temporäre Tabelle mit dem TempDB-Tabellentyp erstellen

TempDB Temporäre Tabellen sind für größere Datenmengen hilfreich, und Sie erstellen sie in der TempDB-Tabelle im SQL Server. Sie können Indizes erstellen, um die Performance zu optimieren, ähnlich wie Sie es für eine reguläre Tabelle in Finanz‑ und Betriebs-Apps tun würden.

Die Verwendung von TempDB-Tabellen ähnelt der Verwendung von InMemory-Tabellen, es gibt jedoch einige wesentliche Unterschied, wobei TempDB-Tabellen:

  • Benötigen die linkPhysicalTableInstance-Methode, wenn Sie Daten von einer TempDB-Tabelle in eine andere übertragen, und nicht die InMemory-Methode von setTmpData.
  • Kann global oder entsprechend der Unternehmensdaten sein.
  • Unterstützt den Transaktionsumfang oder das Transaktionsverfolgungssystem (TTS).
  • Unterstützt Indizes.
  • Unterstützt Joins für reguläre Tabellen.

Der folgende Code zeigt die Verwendung einer TempDB-Tabelle und ähnelt der Verwendung einer InMemory-Tabelle, wobei linkPhysicalTableInstance zum Verknüpfen von Daten mit einer neuen Instanz verwendet wird.

    public static void main(Args _args)
    {
        SalesIdTempTable            salesIdTempTable;

        ttsbegin;

        salesIdTempTable.SalesId = 'SO-1';
        salesIdTempTable.insert();

        salesIdTempTable.SalesId = 'SO-2';
        salesIdTempTable.insert();

        ttscommit;

        while select salesIdTempTable
            order by SalesId
        {
            Info(strFmt('%1', salesIdTempTable.SalesId));
        }

        SalesIdTempTable salesIdTempTable2;
 
        salesIdTempTable2.linkPhysicalTableInstance(salesIdTempTable);
    }

Verwenden Sie TempDB im Erweiterbare Datensicherheit (XDS)-Framework, um eine temporäre Tabelle mit zulässigen Daten für Benutzer zu erstellen. Dann können Sie dies je nach Aktualisierungsfrequenz aktualisieren.

Es werden alle Daten vom System in der Tabelle TempDB entfernt, wenn der Benutzer seine Sitzung beendet.