Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Ottimizzazione Query

  1. #1
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541

    Ottimizzazione Query

    Ciao a tutti, ho la seguente query:

    codice:
    SELECT 
            [idListino]
            ,[fidFornitore]
            ,[fidPaese]
            ,[NomeProdotto]
            ,[Atc]
            ,[PrincipioAttivo]
            ,[Brand]
            ,[PackSize]
            ,[CodificaEU]
            ,[Ean]
            ,[Prezzo]
            ,[DataListino] 
            ,[Paesi].Paese as Paese
            ,[Fornitori].RagioneSociale as RagioneSociale                                      
            ,'Nessun Prodotto Ita corrispondente.'
            FROM Listini
            INNER JOIN Fornitori ON fidFornitore=idFornitore
            INNER JOIN Paesi ON fidPaese=idPaese
            WHERE DataListino IN (SELECT max(DataListino) AS DATA_MAX FROM Listini WHERE fidFornitore=@myidFornitore AND fidPaese=@myidPaese GROUP BY fidFornitore, fidPaese)                
            AND (CodificaEU IS NOT NULL AND CodificaEU<>'') OR (Ean IS NOT NULL AND Ean<>'')             
            AND fidFornitore=@myidFornitore AND fidPaese=@myidPaese
            ORDER BY NomeProdotto;
    Però per essere eseguita ci mette circa un minuto ed è un pò troppo.
    Sicuramente il problema è nella prima istruzione WHERE dove cerco in base al max(DataListino). Come posso ottimizzare questa query?
    Grzazie a tutti.

  2. #2
    3670 messaggi. dovresti saperlo che va indicato il db

  3. #3
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541
    Si scusami. SQL SERVER 2014

  4. #4
    prova a spezzare usando una SP

    codice:
    SELECT max(DataListino) AS DATA_MAX 
    INTO #tmp1 
    FROM Listini 
    WHERE fidFornitore=@myidFornitore AND fidPaese=@myidPaese 
    GROUP BY fidFornitore, fidPaese
    		
    		SELECT 
            [idListino]
            ,[fidFornitore]
            ,[fidPaese]
            ,[NomeProdotto]
            ,[Atc]
            ,[PrincipioAttivo]
            ,[Brand]
            ,[PackSize]
            ,[CodificaEU]
            ,[Ean]
            ,[Prezzo]
            ,[DataListino] 
            ,[Paesi].Paese as Paese
            ,[Fornitori].RagioneSociale as RagioneSociale                                      
            ,'Nessun Prodotto Ita corrispondente.'
            FROM Listini
            INNER JOIN Fornitori ON fidFornitore=idFornitore
            INNER JOIN Paesi ON fidPaese=idPaese
            INNER JOIN #tmp1 T1 ON T1.Data_Max=DataListino
            AND (CodificaEU IS NOT NULL AND CodificaEU<>'') OR (Ean IS NOT NULL AND Ean<>'')             
            AND fidFornitore=@myidFornitore AND fidPaese=@myidPaese
            ORDER BY NomeProdotto;
    poi la velocità dipende anche da quanta roba hai in archivio!

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