Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    141

    prestazioni query disastrose

    ciao a tutti, domandone banale, sarà pieno di post.
    ho una tabella composta così:

    CREATE TABLE `foto` (
    `id` int(11) NOT NULL auto_increment,
    `nomeFoto` varchar(255) NOT NULL default '',
    `paroleChiave` text NOT NULL,
    `captionDida` text NOT NULL,
    `fotografo` varchar(32) NOT NULL default '',
    `categoria` char(3) NOT NULL default '',
    `data` date NOT NULL default '0000-00-00',
    `città` varchar(32) NOT NULL default '',
    `provincia` varchar(32) NOT NULL default '',
    `stato` varchar(32) NOT NULL default '',
    `priorità` enum('none','alta','2','3','4','normale','6','7',' bassa') NOT NULL default 'none',
    `foto` varchar(255) NOT NULL default '',
    `thumbnail` varchar(255) NOT NULL default '',
    `fileSize` int(11) NOT NULL default '0',
    `thumbSize` int(11) NOT NULL default '0',
    `fotoFile` mediumblob NOT NULL,
    `thumbFile` mediumblob NOT NULL,
    `idServizio` int(11) NOT NULL default '0',
    PRIMARY KEY (`id`)
    ) TYPE=MyISAM PACK_KEYS=0 AUTO_INCREMENT=1 ;


    qindi 18 campi di cui 2 mediumblob e per il momento nesun indice.
    i meduomblob contengono foto e thumb, le foto sono circa 600Kb e le thumb circa 4Kb.
    il problema sta nel fatto che le mie semplici query di select sono lentisime, veramente troppo ed ho solo 600 record, come saràqundo ce ne saranno 180.000?

    $query1="SELECT id, nomeFoto, captionDida, priorità, thumbnail, idServizio FROM foto WHERE idServizio=$id1 && id>$id2";
    $query2="SELECT id, nomeFoto, captionDida, priorità, thumbnail, idServizio FROM foto WHERE priorità = 'none' && id < $limit ORDER BY id DESC";
    $query0="SELECT id, nomeFoto, captionDida, priorità, thumbnail, idServizio FROM foto WHERE priorità = 'none' ORDER BY id DESC LIMIT $limit , $limitTot ";


    le mie ipotetiche soluzioni sono:
    dividere le tabelle e farne due, in cui in una ci metto solo i mediumblob e l'ID (chiaramente), e nell'altra metterci solo gli alfanumerici.
    altro problema potrebbe consistere nel fatto che nella seconda query voglio visualizzare solo quelle foto che hanno priorità = 'none' e sono poche rispetto ai record totali (1 su 50), dovrei quindi memorizzare in un'altra tabella queste le foto con questa priorità?

    per il momento non ho altre domande, ma già una sta bollendoin pentola.
    grazie per l'attenzione e per la pazienza che tende a infinito.
    :maLOL:
    ciao
    teo

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    141

    tabelle su partizioni diverse

    ecco sissi
    ecco l'altra domanda.
    e se dividessi in due o più tabelle il mio database come posso metterle in partizioni diverse? e questo aiuterebbe o no le prestazioni?

    l'idea di mettere i mediumblod, che occupano tanto spaio, su un'altra partizione li renderebbe facolmente fruibili?

    super grazie

  3. #3
    perchè metti le foto a db e non sul server e a db ci metti solo il nome?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    Soluzione 1, che consiglio: tieni i blob su filesystem e i dati su database.

    Soluzione 2: tieni i blob in una tabella separata con una relazione 1 <-> 1.

    A meno che tu non abbia motivi imprescindibili per non tenere i file visibili su filesystem locale, penso sia infinitamente piu' performante la 1.
    There are 10 types of people in the world - those who understand binary and those who don't.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    141
    grazie mille, innanzitutto
    i file non li tengo sul filesystem perchè sto sviluppando in win, per cui non ho i permessi alle cartelle, poi metterò in linux, ma è un passo che non so come e quando fare, in più gira voce che sia più sicuro.


    poi ho parlato con un amicho che mi ha detto che mysql memorizza i blob e i text in modo diverso ed è più lento accedervi. per cui sto provando a cambiare i tipi di campi in varchar da 255 anzichè text, da usare solo per stamparli a video, mantengo sempre i text ma non li chiedo alla query, così dovrebbe essere più veloce.

    adesso provo poi vi faccio sapere

    grazie
    teo

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    141

    troppo troppo lento ancora.
    non sbaglio qualcosa nelle query???
    quando gli dico WHERE id=$cheNeSo controlla su tutti i 600 record?
    come funza?


    non può metterci 30 secondi per visualizzare una fotina.
    ho letto che in locale è più lento perchè ovviamente il pc ha una ventina di processi aperti che lavorano, ma la differenza è così enorme?
    come faccio a fare una query del genere su centinaia di migliaia di record in 1 secondo?

    grazie
    teo

  7. #7
    Originariamente inviato da teoteo6
    grazie mille, innanzitutto
    i file non li tengo sul filesystem perchè sto sviluppando in win, per cui non ho i permessi alle cartelle, poi metterò in linux, ma è un passo che non so come e quando fare, in più gira voce che sia più sicuro.
    VVoVe:
    ma che dici... su Windows non hai i permessi alle cartelle semplicemente perchè non hai restrizioni....!!!!!

    è su Linux/unix che devi dare i chmod corretti alle cartelle...



    francesco
    Ciao!

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    141
    :maLOL:

    lo so, qui si può fare qualsiasi cosa

    come faccio su linux? ho istallato mandrake virtuale con Wmware ma non conosco i comadi per far partire apache e mysql. come fare?

    ciao
    grazie

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    141
    CI SONO RIUSCITOOOOOO

    ho diviso in due tabelle, in una le foto, nell'altra solo le informazioni per la ricerca e adesso è molto più veloce, un'altro pianeta.

    vorrei adesso sistemare i file del database in un'altra partizione del disco,come posso fare?

    e come posso avviare apache in linux? e dove devo mettere i miei file php, sempre in linux?

    ciao grazie

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.