Frage

Ich habe eine Archiventabelle erstellt, in der nur Daten für die Auswahl gespeichert werden.

Täglich wird es ein Programm geben, um eine Reihe von Datensätzen in die Archivtabelle zu übertragen. Es gibt mehrere Spalten, die indiziert sind; Während andere nicht sind.

Ich besorgt um Zeitkosten pro Stapelinsertion:
- 1. Stapelinsertion: N1
- 2. Batchinsertion: N2
- 3. Batchinsertion: N3

Die Frage ist: Werden N1, N2 und N3 ungefähr gleich oder N3> N2> N1?

Das heißt, werden die Zeitkosten mit mehreren Indizes konstant oder inkrementell sein?

Alle Indizes sind nicht geklüpft.

Die Archiventabellenstruktur ist Folgendes:

create table document (
   doc_id   int unsigned primary key,
   owner_id int,  -- indexed
   title    smalltext,
   country  char(2),
   year     year(4),
   time     datetime,

   key ix_owner(owner_id)
}
War es hilfreich?

Lösung

Die Kosten werden inkrementell sein, O(log(n)).

In der Praxis haben Sie einen Schritt in der Grafik, wenn die Indexgröße einen bestimmten Schwellenwert erreicht und die Indexseiten nicht mehr in den Cache einstellen können

Die Größe des Cache wird durch definiert durch key_buffer_size in MyISAM und innodb_buffer_pool_size in InnoDB.

Vor diesem Schwellenwert sind die Kosten proportional zur Zeitspanne, die nach dem Schwellenwert die Kosten proportional zur Zeitscheibe sein werden (alle multipliziert mit dem log(n) Natürlich)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top