/ / Czy zapytania SQLite, które zwracają duże zestawy wyników, zabierają więcej czasu? - sqlite

Czy zapytania SQLite, które zwracają duże zestawy wyników, zabierają więcej czasu? - sqlite

Podczas wykonywania zapytania SQLite ma rozmiarzwrócony zestaw danych wpływa na czas trwania zapytania? Załóżmy, że na to pytanie nie mam dostępu do żadnego z danych w wyniku, chcę tylko wiedzieć, czy samo zapytanie trwa dłużej. Przyjmijmy także, że po prostu wybieram wszystkie wiersze i nie mam klauzul WHERE ani ORDER BY .

Na przykład, jeśli mam dwie tabele A i B. Powiedzmy, że tabela A ma milion wierszy, a tabela B ma 10 wierszy i że obie tabele mają taką samą liczbę i typy kolumn. Czy wybranie wszystkich wierszy w tabeli A potrwa dłużej niż wybranie wszystkich wierszy w tabeli B?

To jest kontynuacja mojego pytania W jaki sposób kursor odwołuje się do usuniętych wierszy?. Zgaduję, że jeśli podczas kwerendy SQLitetworzy kopię danych, a następnie zapytania, które zwracają duże zestawy danych, mogą trwać dłużej, chyba że istnieje optymalizacja, która kopiuje dane wynikowe zapytania tylko w przypadku zmiany danych w bazie danych, gdy kwerenda wciąż żyje?

Odpowiedzi:

0 dla odpowiedzi № 1

W zależności od niektórych szczegółów, zapytanie może trwać w różnym czasie.

Przykład: mam tabelę z około 20k wpisów. Wykonuję wyszukiwanie GLOB, które musi wypróbować każdą linię, z LIMITEM. Jeśli LIMIT jest spełniony, zapytanie może zostać zatrzymane wcześniej. Jeśli nie, musi przejść przez całą tabelę (lub JOIN). Tak więc wyniki o zbyt dużej liczbie wyników zwracają się szybciej niż w przypadku wyszukiwania z zaledwie kilkoma wynikami.

Jeśli zapytanie musi przebiegać przez tę samą ilość danych, nie oczekuję znaczącej różnicy między mniejszą i większą ilością wybranych wierszy. Oczywiście będzie oczywiście koszt IO.