Mam DB z kilku pólSQLite: czy LIKE 'searchstr%' powinien używać indeksu?
word_id — INTEGER PRIMARY_KEY
word — TEXT
...
..i ~ 150k wierszy.
Ponieważ jest to słownik, szukam słowa z maską 'search_string%'
używając LIKE. Kiedyś pracował dobrze, biorąc 15 ms, aby znaleźć pasujące wiersze. Tabela ma indeks dla pola 'word'
. Niedawno zmodyfikowałem tabelę (niektóre pola tej tabeli, które są poza zakresem) i coś się wydarzyło - zajmuje to 400 ms, aby wykonać zapytanie, więc rozumiem, że teraz nie korzysta z indeksu. Proste zapytanie z = zamiast podobnym pokazuje wynik 10 ms. Czy ktoś ma pomysł, co się tutaj dzieje?
Myślę, że tak, prawdopodobnie chcesz spojrzeć na b-drzewo, ponieważ b-drzewo jest wydajne w zapytaniu o zakres i podobne porównanie. – Jasonw
Hmm, nie indeksu przypuszczam tworzenie b-drzewa? Masz na myśli, że sam powinienem stworzyć b-drzewo? – nikans
Czy% zawsze pojawia się tylko na końcu wyszukiwanego hasła, a nie na początku? – mikel