J'ai cette requête ci-dessous et cela fonctionne. Cependant, il faut plus de 30 minutes pour courir. Essentiellement, le champ sku est unique, mais les tables auxquelles il se joint ont plusieurs valeurs qui correspondent à l'entity_id. Je veux seulement retourner la première valeur trouvée. Je comprends que la façon dont je le fais fonctionne maintenant, mais ce n'est pas efficace du tout. Tous les conseils seraient grandement appréciés.Retourne seulement le premier match avec Inner Join
Désolé pour l'exemple de code bizarre. Impossible de le mettre en forme sous l'option de code.
Merci!
SELECT
FROM
(
\t SELECT DISTINCT substring(sku, 1,
\t (
\t SELECT CASE
\t \t WHEN charindex('-', sku)-1 = -1
\t \t THEN 0
\t \t ELSE charindex('-', sku)-1
\t END
\t)) AS sku,
\t CAST(cpet.value AS varchar(max)) AS 'DESCRIPTION', cpev.value AS 'URL_KEY', CONCAT('https://azureedge.net/catalog/product', cpemg.value) AS 'image', ROW_NUMBER() OVER(PARTITION BY sku ORDER BY sku) AS RowNumber
\t FROM imp_mg.CATALOG_Product_Entity cpe
\t INNER JOIN
\t imp_mg.CATALOG_Product_Entity_Text cpet
\t ON cpe.entity_id = cpet.entity_id
\t INNER JOIN
\t imp_mg.CATALOG_Product_Entity_Varchar cpev
\t ON cpe.entity_id = cpev.entity_id
\t INNER JOIN
\t imp_mg.CATALOG_Product_Entity_Media_Gallery cpemg
\t ON cpe.entity_id = cpemg.entity_id
) AS a
WHERE a.RowNumber = 1
Merci pour votre réponse. J'ai couru la requête et l'ai tué à 27 minutes. Je vais essayer de gérer toutes les jointures dans le pipeline Azure à la place. J'espère que cela allégera la charge des requêtes réelles. –