update sql exemple




résultats partiels d'une requête SELECT longue durée? (3)

Nous émettons des requêtes longues sur une base de données mysql. (Le contexte est l'analyse de données hors ligne, pas une application.) Comment nous allons procéder en termes de recherche dépend des résultats que nous obtenons en cours de route. Il serait utile que nous puissions voir les résultats (partiels) tels qu'ils sont générés par une instruction SELECT - avant que la requête ne soit terminée.

Est-ce possible? Ou sommes-nous bloqués à attendre que la requête se termine (ce qui, compte tenu de la taille de l'ensemble de données peut prendre quelques heures) pour afficher les résultats qui ont été générés dans les toutes premières secondes qu'il a couru?

Merci pour toute aide.


Désolé d'ajouter ceci comme nouvelle réponse, mais le bouton "ajouter un commentaire" ne s'affiche toujours pas:

@Lasse,

La question m'a semblé que le PO était intéressé à «connaître à l'avance la valeur actuelle, disons, d'une somme en cours de calcul».

Cela ne peut pas être fait, période.

Si la question du PO était plutôt dans le sens de ce que vous indiquez, qui consiste à obtenir les «premiers sous-ensembles de l'ensemble des résultats complets», ma suggestion serait bien sûr de recourir à des techniques de questions de quota. Vous savez, "OPTIMIZE FOR 20 ROWS" et ce genre de choses.


Je vais risquer de deviner que vous avez ORDER BY ou GROUP BY dans le cadre de votre requête.

La plupart des moteurs de bases de données que j'ai utilisés commencent à transmettre les données au client dès que possible, même s'il ne les a pas encore toutes récupérées en interne. Cependant, une fois que vous avez lancé GROUP BY ou ORDER BY dans le mixage, le moteur ne sait pas à quoi ressemblera la première ligne tant qu'il n'aura pas produit l'ensemble du serveur de données, ce qui explique pourquoi vous attendez depuis longtemps. temps.


Renvoyer des résultats intermédiaires alors que la requête "full" est toujours en cours, est contraire à l'esprit de la façon dont SQL, et même le modèle relationnel, a été conçu à l'origine.

Le RM, et même le SQL, ont été convoqués pour renvoyer seulement des résultats complets et définitifs une fois que ceux-ci sont "entièrement et finalement" calculés.

Si vous voulez obtenir des approximations statistiquement fiables du résultat final qui sont basées sur un sous-ensemble de la population, vous devez RESORT aux techniques de statistiques et d'extrapolation.





select