Twiger


Si ceci est votre première visite, nous vous invitons à consulter la FAQ en cliquant sur le lien ci-dessus. Vous devrez peut-être vous inscrire avant de pouvoir envoyer des messages : cliquez sur le lien d'inscription ci-dessus pour cela. Pour commencer à lire les messages, sélectionnez le forum que vous voulez visiter depuis la liste ci-dessous.



Développement Web De la configuration d'un serveur web à la syntaxe d'un langage de programmation en passant par de l'intégration de frameworks, de code client et même un peu d'xhtml et de css.

Réponse
Vieux 26/02/2009, 16h19   #1
fbparis
wrinaute accroc
 
Avatar de fbparis
 
Date d'inscription: mars 2008
Messages: 606
fbparis is on a distinguished road
Question Probleme d'optimisation SQL

Je suis confronté à un choix difficile :

J'ai une requête susceptible de renvoyer beaucoup de résultats et je veux donc afficher à la fois les N premiers résultats et le nombre total de résultats. Les fonctions du genre num_rows() deviennent inutiles lorsqu'on utilise LIMIT dans la requete, donc j'hésite entre deux façons de faire :

1) Deux requêtes :

Code:
SELECT * FROM table LIMIT x,n; => pour récupérer les lignes à afficher
SELECT COUNT(*) FROM table; => pour récupérer le nombre total de ligne
2) Une seule requête :

Code:
SELECT * FROM table; => je récupère tout

Puis : 
N = num_rows()
Et pour l'affichage, je me cale avec une fonction sql_results(x) et j'affiche n lignes
Vous me conseillez quoi ? Est-ce que l'utilisation de LIMIT dans une requête soulage vraiment la BDD ? (parceque si ca change rien je prends la deuxieme solution direct)
__________________
Horoscope gratuit, Astrologie et blog voyance : ça fait pschitt ?
fbparis est déconnecté   Réponse avec citation
Vieux 26/02/2009, 16h53   #2
Malaiac
intégriste modéré
 
Avatar de Malaiac
 
Date d'inscription: mars 2008
Localisation: Naoned / Frehel
Messages: 228
Malaiac is on a distinguished road
Envoyer un message via MSN à Malaiac
Par défaut

mysql http://dev.mysql.com/doc/refman/5.0/...functions.html found_rows est ton ami

Citation:
In some cases, it is desirable to know how many rows the statement would have returned without the LIMIT, but without running the statement again. To obtain this row count, include a SQL_CALC_FOUND_ROWS option in the SELECT statement, and then invoke FOUND_ROWS() afterward:

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
-> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();
The second SELECT returns a number indicating how many rows the first SELECT would have returned had it been written without the LIMIT clause.
__________________
zeList, annuaire sur WordPress - musique - santé - écologie

"Dans le projet de google outre le fait de voiloir gagner de l'argent il y a aussi le but d'améliorer le monde et je crois qu'on y contribue tous en respectant des règles qui améliorent l'internet d'aujourd'hui de de demain"
WRInaute occasionnel

Dernière modification par Malaiac ; 26/02/2009 à 17h04.
Malaiac est déconnecté   Réponse avec citation
Vieux 26/02/2009, 16h56   #3
fbparis
wrinaute accroc
 
Avatar de fbparis
 
Date d'inscription: mars 2008
Messages: 606
fbparis is on a distinguished road
Par défaut

Merci mon bon, je vais mater ça, mais pas sur que ça me concerne je ne bosse plus qu'avec sqlite en fait
__________________
Horoscope gratuit, Astrologie et blog voyance : ça fait pschitt ?
fbparis est déconnecté   Réponse avec citation
Vieux 26/02/2009, 17h22   #4
Phobos
't3tin3'
 
Avatar de Phobos
 
Date d'inscription: mars 2008
Localisation: Paris, La Londe, Nancy
Messages: 172
Phobos is on a distinguished road
Envoyer un message via MSN à Phobos Envoyer un message via Skype™ à Phobos
Par défaut

Si tu ne mets pas de conditions dans ta recherche (que tu veux donc compter le nombre total d'enregistrement de la table), faire une seconde requête count(*) sera la meilleure solution, car la valeur est déjà enregistrée dans la db, ça ne prend pas de temps à te la retourner
__________________
Forums - LowL - Novetys
dispo par mail, me cherchez pas trop sur msn, irc ou Gtalk
Phobos est déconnecté   Réponse avec citation
Vieux 26/02/2009, 17h48   #5
fbparis
wrinaute accroc
 
Avatar de fbparis
 
Date d'inscription: mars 2008
Messages: 606
fbparis is on a distinguished road
Par défaut

Bon pour l'instant j'ai choisi la solution avec le seek... Je note tout ça dans les liste des trucs a faire plus tard si je dois revenir optimiser mon script

Merci en tous cas pour vos retours, c'est de toutes façons une question que je me pose depuis longtemps et à chaque fois...

Un site avec toutes ces problématiques et à chaque fois la solution ce serait énorme en tous cas Avec une nav pour trouver rapidement la solution à un problème donné, et des solutions générale + affinées selon le systeme de bdd...

edit: un wiki serait adapté, je précise que :
wikidatabase.net
wikisql.net
wikisql.org

sont libres
__________________
Horoscope gratuit, Astrologie et blog voyance : ça fait pschitt ?

Dernière modification par fbparis ; 26/02/2009 à 17h50.
fbparis est déconnecté   Réponse avec citation
Réponse

Liens sociaux

Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

BB code is oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Navigation rapide

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
Problème de suggestion Google Marie Outils de recherche & Référencement 30 28/11/2008 17h50
Probleme d'affichage avec Google Maps Nosurf99 Veille & Actualité 1 28/10/2008 19h51


Fuseau horaire GMT +2. Il est actuellement 01h12. Édité par : vBulletin® version 3.7.1
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Tous droits réservés.
Version française #15 par l'association vBulletin francophone



Se connecter


Sponsors
outil referencement
Test code de la route gratuit carte de rencontre
atterrir