IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Connaitre la taille en Ko d'une requete


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut Connaitre la taille en Ko d'une requete
    Bonjour
    Quand on fait une requete de type SELECT * FROM..., on remonte une certaine quantité d'information. J'aimerais connaitre la taille en Ko que l'on remonte.

    Deuxièmement, j'aimera faire ceci:

    On a une requête
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Colonne1 Titredelarticle, Colonne2 CorpsdelArticle FROM Base

    Il est possible que Colonne2 contienne beaucoup d'information. Or, tout ce dont j'ai besoin, c'est de savoir si Colonne2 est vide ou non.

    Est-il donc possible de faire qqch comme:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Colonne1 Titredelarticle, Isempty(Colonne2) CorpsdelArticle FROM Base
    qui me renvoie true ou false;

    Merci

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut

    Pour la question 1, il n'y a pas de fonction pour ce genre requête.
    Ce que tu peux faire c'est la différence de mémoire consommée entre le début et la fin de la requête en utilisant : memory_get_usage()

    Pour la question 2, regarde du côté des instructions de contrôle MySQL (IF, IFNULL...) : ici

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Il est possible que Colonne2 contienne beaucoup d'information. Or, tout ce dont j'ai besoin, c'est de savoir si Colonne2 est vide ou non.
    Si j'ai bien compris, on peu modéliser cela différemment afin de mieux tirer parti de ce qu'offre une Bdd.

    Je m'explique.
    Si on pose les cardinalités des données entres elles, celles d'une table par exemple, on peu détecter des choses ainsi :
    - Par moment les cardinalités qu'il y a entre 2 champs (ou colonnes) sont : 1,1.
    C'est à dire que s'il y a une valeur dans la colonne 1 il y aura toujours une valeur dans la colonne 2 (et inversement donc).

    - Par moment les cardinalités seront : 1,0.
    C'est à dire qu'il y aura une valeur dans la colonne 1 mais rien (équivalent à NULL) pour la colonne 2.

    Et bien ceci peu amener à "sortir" cette donnée (la colonne) pour la mettre dans une autre table.


    Un exemple.
    Admettons qu'on est une table "articles", avec comme colonne : id|titre|a_la_une
    - id : Identifiant unique des articles (auto_incrrement, NOT NULL) -> il y aura alors toujours une valeur.
    - titre : Le titre de chaque article (NOT NULL) -> il y aura toujours un titre.
    - a_la_une : Pour définir si un article sera "à la Une" ou pas.

    Au moins 2 solutions très différentes peuvent se faire.
    - Soit on conserve cet colonne dans cette table, et on lui met 1 comme valeur si un article est à la Une, soit NULL si ce n'est pas le cas.

    - Soit on supprime cette colonne de cette table, et on crée une nouvelle table "articles_une" pour insérer uniquement les IDs des articles "A la Une".
    -> colonne : id_article|publier_le (par exemple)
    En somme, on ne stock pas d'informations inutiles, uniquement celles dont on a besoin.

    Ensuite, tout est une question de jointure :
    - Si par exemple on recherche uniquement les articles à la une, on peu faire une requête uniquement sur la table "articles_une".
    Mais le mieux théoriquement c'est de faire une requête sur les 2 tables "articles" et "articles_une" avec une jointure interne :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT au.id_article
    FROM articles a
    JOIN articles_une au ON a.id = au.id_article
    WHERE au.publier_le > NOW()
    Ici, il n'y a absolument pas besoin de faire une condition comme IS NULL ou IS NOT NULL, la jointure fait le travail tout seul.

    - Si on souhaite un ensemble d'articles indifféremment qu'ils soient à la une ou pas, alors on fera une jointure externe.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT a.id, au.id_article
    FROM articles a
    LEFT JOIN articles_une au ON a.id = au.id_article
    Ici, ce sera au niveau de l'applicatif où on devra faire quelque chose si tel ou tel article est à la une ou pas.
    Lorsqu'un article n'existe pas dans la table "a_la_une" sa valeur sera NULL.

    Ceci dit, on peu s'aider en faisant quelque chose comme :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT a.id,
    IF(au.id_article,'oui', 'non');
    FROM articles a
    LEFT JOIN articles_une au ON a.id = au.id_article
    La valeur de id_article sera soit oui ou non.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] Connaitre la taille (hauteur/largeur) d'une image uploadé
    Par Malonix dans le forum Symfony
    Réponses: 11
    Dernier message: 08/07/2010, 12h09
  2. connaitre le nombre de ligne d'une requete
    Par moimemessssssssss dans le forum VBA Access
    Réponses: 1
    Dernier message: 25/06/2008, 19h35
  3. taille de champs d'une requete
    Par maraly dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/10/2007, 09h58
  4. [C#][Débutant] Connaitre le nombre de lignes d une requete SQL
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/04/2006, 00h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo