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

    [MySql] quale query più veloce?

    Salve a tutti!
    Vi sottopongo due query, secondo voi quale può essere più veloce?

    OPZIONE 1
    codice:
    **Tabella Utenti
    +idutente
    +usettore (testo)
    
    Query: SELECT count(*) FROM utenti where usettore in ('industria','agricoltura');

    OPZIONE 2
    codice:
    **Tabella Utenti
    +idutente
    +usettore (ID, fk)
    
    **Tabella Settori
    +idsettore
    +settore
    
    Query: SELECT count(*) FROM utenti INNER JOIN settori on usettore=idsettore WHERE idsettore in (1,2)

    Meglio la prima con la ricerca nella tabella stessa ma testuale, o la seconda con una inner in più ma una ricerca di id?
    Ultima modifica di Threepwood; 30-06-2015 a 14:35
    Guybrush Threepwood

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Ma perché chiedi in PHP se già nel titolo dici che si tratta di MySQL?
    Fa attenzione per favore.

  3. #3
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Mea culpa pardon
    Guybrush Threepwood

  4. #4
    ciao,

    usa la funzione benchmark passandogli singolarmente le 2 query:
    https://dev.mysql.com/doc/refman/5.0...tion_benchmark
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  5. #5
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Interessante, non la conoscevo!
    Quindi fare una cosa del tipo
    codice:
    SELECT BENCHMARK(1000000,"query1");
    poi
    codice:
    SELECT BENCHMARK(1000000,"query2");
    e vedere il tempo di esecuzione, giusto?

    Il primo valore non ho capito bene a cosa serve, ripete la query N volte?
    Guybrush Threepwood

  6. #6
    si ripete la query ad esempio 1000000 di volte e ti segnala quanto tempo ci ha messo ad eseguirla
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  7. #7
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Molto interessante, grazie del consiglio!
    Guybrush Threepwood

  8. #8
    Quote Originariamente inviata da Threepwood Visualizza il messaggio
    Molto interessante, grazie del consiglio!
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2012
    residenza
    Lima, Perù
    Messaggi
    212
    Tra le due opzione, la seconda mi sembra meglio perché normalizzi "settore", e non hai bisogno del join, la query sarebbe:

    codice:
    SELECT count(*) FROM utenti WHERE usettore in (1,2)
    Jamie Ynonan - Web Developer / Desarrollador Web - HTML5 - CSS3 - Javascript/jQuery - PHP/CodeIgniter/Laravel - SQL/MySQL - Wordpress
    Telelavoro / Teleworking - jamiea31[at]gmail.com - Lima - Perù - GMT -5

  10. #10
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    1) benchmark non serve a nulla, è una vestigia del passato
    2) la prima è di gran lunga più veloce

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 © 2024 vBulletin Solutions, Inc. All rights reserved.