sql >> Database teknologi >  >> RDS >> Mysql

Effektiv sammenføjning over intervalområder i SQL

Jeg er ikke sikker på, hvordan det hele fungerer internt, men afhængigt af situationen vil jeg råde mig til at lege med et bord, der 'ruller ud' alle værdierne fra d1 og derefter slutte sig til den. På denne måde kan forespørgselsmotoren lokalisere den rigtige post 'præcis' i stedet for at skulle finde en kombination af grænser, der matcher den værdi, der søges efter.

f.eks.

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 et indeks i værdikolonnen (**), burde dette være en del hurtigere end at slutte sig til MELLEM start OG slutning på den originale d1-tabel IMHO.

Hver gang du foretager ændringer til d1, skal du selvfølgelig også justere den udrullede tabel (trigger?). Hvis dette sker ofte, vil du bruge mere tid på at opdatere den udrullede tabel, end du fik i første omgang! Derudover kan dette hurtigt tage en del (disk)plads, hvis nogle af intervallerne er virkelig store; og det forudsætter også, at vi ikke behøver at lede efter ikke-hele tal (hvad nu hvis vi kigger efter værdien 3,14?)

(Du kan overveje at eksperimentere med en unik på (værdi, x) her...)




  1. Vis træmenuen for den valgte forælder

  2. Sammenligne strukturer af to databaser?

  3. Azure Virtual Machines til SQL Server-brug

  4. Brugerinput, rengør og desinficer inden afsendelse til db