Не съм сигурен как всичко работи вътрешно, но в зависимост от ситуацията бих посъветвал да си поиграете с маса, която „разгръща“ всички стойности от d1 и след това да се присъедините към тази. По този начин машината за заявки може да определи точния запис „точно“, вместо да се налага да намира комбинация от граници, които съответстват на търсената стойност.
напр.
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..
като се има предвид индекс на колоната със стойност (**), това би трябвало да е доста по-бързо от свързването с МЕЖДУ начало И край на оригиналната таблица d1 IMHO.
Разбира се, всеки път, когато правите промени в d1, ще трябва да коригирате и разгънатата таблица (спусък?). Ако това се случва често, ще отделите повече време за актуализиране на разгръщаната таблица, отколкото сте спечелили на първо място! Освен това, това може да отнеме доста (дисково) пространство бързо, ако някои от интервалите са наистина големи; и също така, това предполага, че не е необходимо да търсим нецели числа (напр. какво ще стане, ако търсим стойността 3,14?)
(Можете да помислите да експериментирате с уникален на (стойност, x) тук...)