2012-04-24 1 views
1

Lors de l'exécution d'une requête SQLite, la taille de l'ensemble de données renvoyé affecte-t-elle la durée de la requête? Supposons pour cette question que je n'accède à aucune des données dans le résultat, je veux juste savoir si la requête elle-même prend plus de temps. Supposons également que je sélectionne simplement toutes les lignes et que je n'ai pas de clause WHERE ou ORDER BY. Par exemple, si j'ai deux tables A et B, disons que la table A a un million de lignes et la table B a 10 lignes et que les deux tables ont le même nombre et les mêmes types de colonnes. La sélection de toutes les lignes du tableau A prendra-t-elle plus de temps que la sélection de toutes les lignes du tableau B? Ceci est une suite à ma question How does a cursor refer to deleted rows?. Je suppose que si une requête SQLite effectue une copie des données, les requêtes renvoyant des ensembles de données volumineux peuvent prendre plus de temps, sauf si une optimisation copie uniquement les données de résultat de la requête s'il y a une modification des données dans la base de données. alors que la requête est toujours en vie?Les requêtes SQLite renvoyant de grands ensembles de résultats prennent-elles plus de temps?

Répondre

0

En fonction de certains détails, oui, une requête peut prendre différentes durées.

Exemple: J'ai une table avec quelques 20k entrées. Je fais une recherche GLOB qui doit essayer chaque ligne, avec une limite. Si la limite est remplie, la requête peut s'arrêter tôt. Sinon, il doit passer par toute la table (ou JOIN). Ainsi, les recherches avec trop de résultats reviennent plus rapidement que les recherches avec seulement quelques résultats.

Si la requête doit exécuter la même quantité de données, je ne pense pas qu'il existe une différence significative entre une quantité plus petite et plus grande de lignes sélectionnées. Il y aura probablement des coûts d'IO, bien sûr.

+0

J'ai clarifié ma question, je suis intéressé uniquement dans les situations où je sélectionne toutes les lignes d'une seule table, pas de clauses WHERE, ORDER BY, LIMIT ou JOIN. – satur9nine

+0

Ok. Je dirais que la réponse est la même. L'exécution de plusieurs lignes dans le tableau A prendra plus de temps. Un index peut faire disparaître cette étape. Si vous sélectionnez tout, je m'attendrais à ce que les lignes sortent aussi vite que IO (plus overhead) permet. Plus de données au même rythme prendront plus de temps. – XTL

Questions connexes