Visualizzazione dei risultati da 1 a 8 su 8

Discussione: relazione senza join

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    14

    relazione senza join

    Salve
    Magari è una stupidata quella che sto per dirvi, ma vorrei sapere se è possibile fare una relazione senza join(almeno nel mio caso), visto che sono lente, vi faccio un esempio:

    prodotti
    id | nome | id_neg-pro
    1 | fx-6350 | 475
    2 | pen usb 8gb | 123

    neg-pro
    id | id_negozi
    475 | 10
    475 | 23
    123 | 1080
    123 | 48

    negozi
    id | nome_neg
    10 | bizi
    23 | infoware
    1080 | galac
    48 | mdw

    Con queste tabelle usando solo le query necessarie così da un prodotto si può vedere quanti negozi lo hanno. anche se devo fare più select e gestire i risultati con delle variabili per filtrare a codice le relazioni.
    Secondo voi conviene?
    O sono costretto a passare a orientdb?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Quanti record hai nelle diverse tabelle ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Dipende dal database

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    14
    Scusate
    mi sono dimenticato... il db è mysql.
    Dovrei arrivare sui 100mila records

    Grazie per avermi risposto

  5. #5
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Quote Originariamente inviata da mdwalter Visualizza il messaggio
    Scusate
    mi sono dimenticato... il db è mysql.
    Dovrei arrivare sui 100mila records

    Grazie per avermi risposto
    per così pochi record non vedo particolari problemi.
    Selettività degli indici?

    Grosso modo così
    codice:
    select prodotti.id,prodotti.nome,count(*) as quanti from prodotti
    join neg-pro on (prodotti.id=neg-pro.id) 
    join negozi on (negozi.id=neg-pro.id_negozi) 
    group by prodotti.id,prodotti.nome
    Fai attenzione al group by sul nome prodotti (decisamente più rapido con un indice).
    Ultima modifica di MySQL; 20-08-2015 a 19:00

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    14
    ma così usiamo join, per evitare il join non sarebbe meglio fare più di una select?
    Io volevo evitare del tutto le join e fare un "join" sul php.
    Per esempio una select per il prodotto "fx-6350" con risultato id_neg-pro: 475
    fare altra select per la tabella neg-pro filtrando tutti gli id 475 che avrei 2 risultati id_neg: 10, 23
    poi qui cè il problema vero, mica posso fare una select per negozio(10, 23), giusto? Oppure posso filtrare la select con gli id 10 e 23 o molti di più?

  7. #7
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Quote Originariamente inviata da mdwalter Visualizza il messaggio
    ma così usiamo join, per evitare il join non sarebbe meglio fare più di una select?
    Io volevo evitare del tutto le join e fare un "join" sul php.
    Per esempio una select per il prodotto "fx-6350" con risultato id_neg-pro: 475
    fare altra select per la tabella neg-pro filtrando tutti gli id 475 che avrei 2 risultati id_neg: 10, 23
    poi qui cè il problema vero, mica posso fare una select per negozio(10, 23), giusto? Oppure posso filtrare la select con gli id 10 e 23 o molti di più?
    Certo che usi join, nel tuo caso è proprio la cosa da fare, basta avere gli indici sui campi dei join (che nel tuo caso sono tutte chiavi, quindi nessun problema) ed eventualmente sul campo su cui eseguirai il group by.
    La query precedente impiega per l'esecuzione pochi millisecondi anche per milioni di righe delle due tabelle di destra.
    Almeno 100 volte più veloce di qualsiasi cosa puoi fare in PHP

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    14
    Ohhhhh adesso ho capito!
    Sei un grande!!
    Scusa per il mio comprendonio, abbi pazienza, ma adesso ho capito benissino. join sulle chiavi con indici non rallenta...Grazie 1000!!!!
    Spero che questo può servire a qualcuno come spunto

Tag per questa discussione

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.