sql >> Databáze >  >> RDS >> Oracle

Jak záznamy pevné délky a pole pevné délky zvyšují výkon databáze?

Zjednodušené, koncepční vysvětlení, které není specifické pro databázi:

Když je předem známa maximální možná délka záznamu, lze konec záznamu/začátek dalšího záznamu najít v konstantním čase. Je to proto, že toto umístění je vyčíslitelné pomocí jednoduchého sčítání, velmi analogického k indexování pole. Představte si, že používám int s jako ukazatele na záznamy a že velikost záznamu je někde definovaná celočíselná konstanta. Poté, abyste se dostali z aktuálního umístění záznamu na další:

int current_record = /* whatever */;
int next_record = current_record + FIXED_RECORD_SIZE;

To je ono!

Alternativně, při použití řetězců ukončených (nebo jinak oddělených) záznamů a polí si můžete představit, že další pole/záznam je nalezen skenováním v lineárním čase, které musí prohlížet každý znak, dokud není nalezen oddělovač. Jako předtím,

char DELIMITER = ','; // or whatever
int current_record = /* whatever */;
int next_record = current_record;
while(character_at_location(next_record) != DELIMITER) {
    next_record++;
}

Toto může být zjednodušená nebo naivní verze implementace v reálném světě, ale obecná myšlenka stále platí:nemůžete snadno provést stejnou operaci v konstantním čase, a i kdyby to bylo konstantní čas, je nepravděpodobné, že by byla tak rychlá jako provedení jediné operace přidání.



  1. Oracle Hierarchical Query

  2. Pokud existuje způsob, jak mohu vnitřně připojit tabulku MS SQL k tabulce MySql v jednom dotazu pomocí MySql?

  3. Vložte data JSON do databáze SQLite v systému Android

  4. Django SearchVector pomocí icontains