sql >> Databasteknik >  >> RDS >> Mysql

Effektiv sammanfogning över intervallintervall i SQL

Inte säker på hur allt fungerar internt, men beroende på situationen skulle jag råda dig att leka med ett bord som "rullar ut" alla värden från d1 och sedan gå med på den. På så sätt kan frågemotorn hitta rätt post "exakt" istället för att behöva hitta en kombination av gränser som matchar det värde som letas efter.

t.ex.

x value
a  1
a  2
a  3
b  5
b  6
b  7
b  8
b  9
b 10
b 11
c 19 etc..

givet ett index i värdekolumnen (**), borde detta vara ganska mycket snabbare än att gå med MELLAN start OCH slut på den ursprungliga d1-tabellen IMHO.

Naturligtvis, varje gång du gör ändringar i d1, måste du också justera den utrullade tabellen (trigger?). Om detta händer ofta kommer du att spendera mer tid på att uppdatera den utrullade tabellen än du fick från första början! Dessutom kan detta ta ganska lite (disk)utrymme snabbt om några av intervallen är riktigt stora; och även detta förutsätter att vi inte behöver leta efter icke-hela tal (t.ex. vad händer om vi letar efter värdet 3,14?)

(Du kan överväga att experimentera med en unik på (värde, x) här...)




  1. Slavning av en kraschad MySQL-masterserver i semisynkron replikeringsinställning

  2. Hur man dokumenterar en databas

  3. SNAPSHOT-isoleringsnivån

  4. Hur kan jag automatiskt skapa en e-postadress för mina webbplatsmedlemmar?