Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107

    [Mysql] Quale sintassi + veloce?

    Salve a tutti!

    Su un database abbastanza grande (diciamo 100.000 / 200.000 record) quale fra queste query è più veloce?

    codice:
    SELECT * from TABELLA1 inner join TABELLA2 on TABELLA1.ID=TABELLA2.FK
    
    oppure
    
    SELECT * from TABELLA1,TABELLA2 where TABELLA1.ID=TABELLA2.FK
    Non per altro... ma devo fare una serie di query, e le prime che ho fatto mi hanno fatto riavviare mysql + volte...


    P.S. Tutte con gli indici già impstati ovviamente
    Guybrush Threepwood

  2. #2
    sono 2 join, dubito cambi molto tra l'una o l'altra ... ma non hai modo di testare di persona ?
    connettiti da shell e fai un paio di prove, se il risultato è immediato è più facile sia crashato tutto per il php usato e non per problemi al db
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    non le faccio da php ma direttamente da console (mysql cc o phpmyadmin)

    La prima non è che mi crasha... ma dopo 20 minuti di occupazione 95% del processore è ora di staccarla

    Si tratta di "Joinare" circa 100.000 aziende con i relativi CAP
    Guybrush Threepwood

  4. #4
    Originariamente inviato da Threepwood
    non le faccio da php ma direttamente da console (mysql cc o phpmyadmin)
    evita il phpmyadmin quando hai a che fare con tabelle e dati consistenti ... va bene per molto ma non per tutto.

    usa il binario di mysql e fai li le prove ma insisto che mi sembra strano sia così pesante per soli 100.000 records ... c'è qualcosa che non va (e spero sia il phpMyAdmin)
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Devi proprio usarlo quell'asterisco?

    Per il resto, fai un paio di prove con LIMIT impostato e vedi i tempi
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  6. #6
    Originariamente inviato da IroN@xiD
    Devi proprio usarlo quell'asterisco?

    Per il resto, fai un paio di prove con LIMIT impostato e vedi i tempi
    ops ... hai ragione, da shell per evitare la lista di 100.000 risultati consiglio LIMIT anche io, da phpMyAdmin lo mette in automatico e non ho pensato a ricordartelo
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Originariamente inviato da andr3a
    ops ... hai ragione, da shell per evitare la lista di 100.000 risultati consiglio LIMIT anche io, da phpMyAdmin lo mette in automatico e non ho pensato a ricordartelo
    La shell io la imposto a 6000 non di +...

    Nella fattispecie, come dicevo, ho 2 tabella che sarebbero AZIENDE e CITTA

    La prima, con i dati aziendali e il cap
    La seconda con Citta,prov,cap.

    Devo semplicemente relazionarli per il cap... solo che mi blocca tutto ...
    Guybrush Threepwood

  8. #8
    Originariamente inviato da Threepwood
    La shell io la imposto a 6000 non di +...

    Nella fattispecie, come dicevo, ho 2 tabella che sarebbero AZIENDE e CITTA

    La prima, con i dati aziendali e il cap
    La seconda con Citta,prov,cap.

    Devo semplicemente relazionarli per il cap... solo che mi blocca tutto ...
    comincio a pensare che le query postate all'inizio non abbiano nulla a che fare con quelle che usi tu ... :rollo:


    primo punto:
    - dati aziendali e cap ... Citta prov e cap ... c'è qualche relazione che non mi è chiara, l'azienda dovrebbe avere un solo id per risalire alla città alla provincia e ad il cap ... è così o hai dati duplicati / non ottimizzati ? ... insomma dovrebbe essere un banale uno a molti, riferito alla tabella Citta prov e cap ... in realtà dovrebbe essere un Citta e cap con id Prov per un'altra relazione uno a molti delle provincie e via così per le regioni ... qualcosa tipo
    codice:
    Nazione (id, nome)
    
    	Regione (id, id_nazione, nome)
    
    		Provincia (id, id_regione, nome)
    
    			Citta (id, id_prov, nome, cap)
    
    				Azienda (id, id_citta, nome, mail, sito)
    ... dico male ? (correggetemi se sbaglio)

    poi la relazione dovrebbe essere per id intero e spero che il CAP non sia un VARCHAR per entrambe le tabelle ... insomma prima di ottimizzare la query mi preoccuperei di verificare che siano ottimizzati i dati in tabella e le relazioni, per poi postare la query esatta che utilizzi al fine di consigliare, eventualmente, migliorie.
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #9
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    le tabelle sono tipo queste:

    AZIENDA
    id
    ragione
    citta
    cap


    PR_CITTA
    idc
    citta
    cap2
    prov
    provincia


    la relazione per assegnare la provincia all'azienda la faccio con il CAP (1-1)
    Guybrush Threepwood

  10. #10
    Originariamente inviato da Threepwood
    le tabelle sono tipo queste:
    ...
    io le avrei fatte diverse ... comunque dimmi che almeno il CAP per la relazione 1-1 non è un varchar ... (perchè non usi l'id dell'altra tabella al posto del cap ?)
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.