Je suis en sérieuse difficulté, j'ai une énorme requête subtile qui prend énormément de temps à s'exécuter. En fait, il gèle l'accès et parfois je dois tuer la requête ressemble à:Sélectionnez l'optimisation dans Access
SELECT
ITEM.*,
ERA.*,
ORDR.*,
ITEM.COnTY1,
(SELECT TOP 1 New FROM MAPPING WHERE Old = ITEM.COnTY1) AS NewConTy1,
ITEM.COnValue1,
(SELECT TOP 1 KBETR FROM GEN_KUMV WHERE KNUMV = ERA.DOCCOND AND KSCHL = (SELECT TOP 1 New FROM MAPPING WHERE Old = ITEM.COnTY1)) AS NewCOnValue1
--... etc: this continues until ConTy40
FROM
GEN_ITEMS AS ITEM,
GEN_ORDERS AS ORDR,
GEN_ERASALES AS ERA
WHERE
ORDR.ORDER_NUM = ITEM.ORDER_NUM AND -- link between ITEM and ORDR
ERA.concat = ITEM.concat -- link between ERA and ITEM
Je ne vais pas vous fournir le schéma des tables depuis la requête fonctionne, ce que je voudrais savoir est s'il y a un moyen ajouter NewConTy1 et NewConValue1 en utilisant une autre technique pour le rendre plus efficace. Le fait est que les champs Con * vont de 1 à 40, donc je dois les aligner (NewConTy1 à côté de ConTy1 avec NewConValue1 à côté de nouveau ConValue2 ... etc jusqu'à 40). Conty # et ConTyValue # sont en éléments (chacun dans un champ) NewConty # et NewConValue # sont ERA (chacun dans un enregistrement)
J'espère vraiment que mon explication est assez pour comprendre mon problème, au plaisir de vous entendre les gars
EDIT:
Ignore le TOP 1 dans les CHOISIT, c'est parce que les décharges actuelles de données dont je dispose ne sont pas exactes, il va être enlevé plus tard
EDIT 2:
Une autre chose que ma requête retourne jusqu'à 230 champs aussi lol
Merci Miloud
Le problème est la mauvaise structure de données. Corrigez cela et le problème (et les solutions de contournement requises) disparaissent. –
@ David-W-Fenton Vous n'avez peut-être pas eu l'occasion de lire les commentaires? – Fionnuala
Quels commentaires? Je ne vois rien pour résoudre les très graves problèmes structurels évidents dans le SQL. –