]MSSQL] select z nieciągłych przedziałów

0

Witam,
Może ktoś byłby w stanie pomóc znaleźć rozwiązanie:
mam tabelę, gdzie w w polu wyszukiwanym typu varchar ma wartości typu:
ID VAL
1 1,3-5,9
2 2,6-8
3 12
itd
Takich wierszy mam w tabeli kilka tysięcy.

Jak najlepiej byłoby uzyskać ID w wyszukiwaniu według wybranej przez usera wartości: chodzi mi o sytuację, że jak w wyszukiwaniu poda, że chce znaleźć VAL=1 to dostanie ID=1; jak VAL=7 to ID=2 (w zakresie). Robiłem to w procedurce po obróbce tekstu (zamiana przecina na and, - na between, itp), ale działa to przeraźliwie wolno i coraz gorzezj wraz ze zwiększaniem się ilości danych.

Uwaga: przedziały mogą się powtarzać i zazębiać.

Z góry dzięki.

Mars

0

Każde takie rozbijanie napisu to porażka wydajnościowa czemu z resztą nie ma się co dziwić. SQL musi wziąć wartość pola VAL, rozbić, a następnie wykonać zapytanie... i robi to na każdym rekordzie z osobna. Musisz koniecznie rozbić zakres na dwie osobne kolumny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1