Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: query lenta

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    518

    query lenta

    Buonasera a tutti, devo visualizzare alcune immagine contenute in un database,
    utilizzo questo codice:

    <?php

    include("../inclusioni/conf.php");
    include_once("paging.php");

    $res = paging("SELECT * FROM utenti WHERE sub_categoria='arredamento'");

    if (!$res[0]) { echo " <table border=\"0\" width=\"100%\" cellspacing=\"1\" cellpadding=\"0\" align=\"center\">
    </tr><span class='fontnero'>
    [b]Attenzione area in aggiornamento</strong</span>

    "; }
    else
    {
    echo "

    <table border=\"0\" width=\"100%\" cellspacing=\"1\" cellpadding=\"0\">

    ";
    while($dati = mysql_fetch_array($res[0])) {


    $od = $dati ["od"];
    $ragione = $dati ["ragione"];


    echo "
    <tr>
    <td width=\"100%\" class=\"fontnero\">[*]Ragione Sociale : $ragione</td>

    </tr>
    <tr>
    <td width=\"100%\" class=\"font12\" align='right'>
    <table border=\"0\" width=\"100%\" cellspacing=\"1\" cellpadding=\"5\" align==\"right\" >
    <tr bgcolor=\"#ffffff\">
    <td width=\"50%\" valign=\"top\"><img src =\"mostra_logo.php?od=$dati[od]\" border=\"0\"></td></td>


    </tr>
    </table>

    ";
    <tr>
    <td width=\"100%\" class=\"font12\" align='center' valign=\"middle\">
    <table border=\"0\" width=\"100%\" cellspacing=\"1\" cellpadding=\"5\" valign=\"middle\" align==\"center\" >
    <tr bgcolor=\"#ffffff\">
    <td width=\"100%\" valign=\"middle\" align=\"left\"></td>
    </td>


    </tr>
    </table>

    ";
    echo "
    <tr bgcolor=\"#ffffff\">
    <td width=\"70%\" class=\"grigio12\"height=\"1\" bgcolor=\"#cccccc\"></td>

    </tr> ";

    }
    }
    echo "</table>";




    l'immagine la recupero da mostra_logo.php


    codice:
    <?php
    include("../inclusioni/conf.php");

    mysql_connect($dbhost, $dbuser, $dbpass)
    or die('Connessione non riuscita: ' . mysql_error());

    if(!mysql_select_db($db))
    die('Selezione database fallita!');

    $query = 'SELECT Type, DatiBinari, Size FROM utenti WHERE od = '.$_GET['od'];
    $risultato = mysql_query($query) or die('Query non valida: ' . mysql_error());
    $tmp = mysql_fetch_array($risultato);



    header('Content-Type: '.$tmp['Type']);
    echo($tmp['DatiBinari']);


    ?>


    Funziona tutto correttamente, il problema consiste nel fatto che la query risulta essere molto lenta.
    grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    518
    up

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401
    Innanzitutto evita di fare SELECT *, usa SELECT od, ragione FROM utenti, cosi' non selezioni colonne inutili.

    Usare una stringa come sub_categoria rallenta sicuramente la ricerca. Usa un id numerico (che poi riferirai ad una tabella categorie)

    Una volta messo sub_categoria come numero puoi metterci anche un indice per velocizzare ulteriormente la query

    PS: la prossima volta usa il tag php per formattare il tuo codice, in modo che sia più semplice leggerlo.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    518
    Grazie per la risposta, provo e ti faccio sapere.
    Saluti.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    518
    Sto provando a creare un indice sul campo sub_categoria, cosa metto nel campo tipo indice e dimensioni?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401
    Come tipo di indice metti semplicemente un INDEX e puoi lasciare vuoto l'altro campo in questo caso.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    518
    OK, un ultima cosa il campo sub_categoria deve essere di tipo int o va bene anche varchar?

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401
    Visto che è un numero conviene usare INTEGER o ancor meglio SMALLINT (dubito tu abbia più di 65535 categorie...) o addirittura TINYINT (limite a 255).

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    518
    Grazie.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    518
    ancora non và, ho notato che il campo ragione lo visualizzo subito, e lenta la visualizzazione della foto.
    che recupero così

    ..........
    "><img src =\"mostra_logo.php?od=$dati[od]\" border=\"0\"></...........

    mostra_logo.php

    Codice PHP:
     <?php 
    include("../inclusioni/conf.php");
    // connessione e selezione del database 
    mysql_connect($dbhost$dbuser$dbpass
    or die(
    'Connessione non riuscita: ' mysql_error()); 

    mysql_select_db($db); 

    $query 'SELECT DatiBinari FROM utenti WHERE od = '.$_GET['od']; 
    $risultato mysql_query($query) or die('Query non valida: ' mysql_error()); 
    $tmp mysql_fetch_array($risultato); 
    // query per recuperare il file 


    header('Content-Type: image/pjpeg'); 
    echo(
    $tmp['DatiBinari']); // potrebbe servire stripslashes() 


    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.