sql >> Database teknologi >  >> RDS >> Oracle

Hvordan øger Fixed-længde-poster og Fixed-længde-felter databasens ydeevne?

Forenklet, konceptuel, ikke-databasespecifik forklaring:

Når den maksimalt mulige postlængde er kendt på forhånd, kan slutningen af ​​posten/begyndelsen af ​​den næste post findes i konstant tid. Dette skyldes, at denne placering kan beregnes ved hjælp af simpel tilføjelse, meget analogt med array-indeksering. Forestil dig, at jeg bruger int s som pointere til poster, og at poststørrelsen er en heltalskonstant defineret et sted. Derefter for at komme fra den aktuelle registreringsplacering til den næste:

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

Det var det!

Alternativt, når du bruger strengterminerede (eller på anden måde afgrænsede) poster og felter, kan du forestille dig, at det næste felt/post findes ved en lineær tidsscanning, som skal se på hvert tegn, indtil afgrænsningstegnet er fundet. Som før,

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

Dette kan være en forenklet eller naiv version af implementeringen i den virkelige verden, men den generelle idé består stadig:du kan ikke nemt udføre den samme operation i konstant tid, og selvom det var konstant tid, er det usandsynligt, at det vil være så hurtigt som udfører en enkelt tilføjelsesoperation.



  1. Sådan fjerner du kolonneoverskrifterne, når du sender forespørgselsresultater via e-mail i SQL Server (T-SQL)

  2. Udløs kun SQL Trigger, når en bestemt bruger opdaterer rækken

  3. Android - Vis brugernavn fra sqlite-database efter login i textView

  4. SIGN() Eksempler i SQL Server