Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [MySQL] Ottimizzazione SubQuery

    Raga urge aiutino veloce,
    Ho impostato una query per ottenere il totale dei valori di alcune date all'interno di un processo comemrciale.

    Le fasi del processo sono:

    1. pianificazione visita
    2. compilazione scheda cliente
    3. resoconto al cliente
    4. ricontatto del cliente
    5. archiviazione della scheda

    per ognuna di queste fasi si va ad aggiornare una data ed io volevo effettuare un count di queste date raggruppando i risultati per team di venditori.

    Ho 3 anagrafiche:
    1. tabella clienti
    2. tabella venditori
    3. tabella visite


    ho impostato questa query, che funziona, ma gira x 17 secondi penso che sia inaccettabile come tempo di esecuzione.

    Codice PHP:
    SELECT 
    tb1
    .Divisione,
    tb1.Team,
    COUNTtb1.cod_cliente ) AS tot_clienti,
    COUNTsq.codice_cliente ) AS tot_visitati,
    COUNTsq.data_DV ) AS tot_visite,
    COUNTsq.data_FU ) AS tot_resoconti,
    COUNTsq.data_RC ) AS tot_ricontattati,
    COUNTsq.data_ARCH ) AS tot_archiviati
    FROM clienti 
    AS tb1
    JOIN venditori 
    AS tb3
    ON tb1
    .Team tb3.TeamCode
    LEFT JOIN 
    (SELECT FROM visite WHERE closed 'N') AS sq 
    ON tb1
    .cod_cliente sq.codice_cliente
    WHERE tb3
    .CodeUser '$user'
    AND tb1.flag_sede != 'S'
    AND tb1.flag_escluso != 'S'
    GROUP BY tb1.Team 
    Mi date un amano per ottimizzarla ?




    .

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Posta l'output di show create table delle 3 tabelle e anche quello di

    explain tutta la query che hai postato.

  3. #3
    già qui vedo un attentato alle risorse della macchina

    LEFT JOIN (SELECT * FROM visite WHERE closed = 'N') AS sq
    ON tb1.cod_cliente = sq.codice_cliente

    puoi usare

    LEFT JOIN visite sq
    ON tb1.cod_cliente = sq.codice_cliente AND sq.closed = 'N'

  4. #4
    Originariamente inviato da optime
    LEFT JOIN visite sq
    ON tb1.cod_cliente = sq.codice_cliente AND sq.closed = 'N'
    Prima di postare il dump e l'explain ho provato a modificare la query, sembra proprio che il problema fosse quello + un indice mancate.


    10ks



    .

  5. #5

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.