2010-03-19 7 views
1
UPDATE employees 
    SET job_id = (SELECT job_id 
        FROM employees 
        WHERE employee_id = 205), 
     salary = (SELECT salary 
        FROM employees 
        WHERE employee_id = 205) 
WHERE employee_id = 114; 

Ceci est la requête que j'ai utilisée. Ici, j'utilise 2 sous-requêtes, mais elles ont la même où la condition .. Le temps de recherche est doublé. Existe-t-il un moyen d'optimiser l'ensemble de la requête à une seule sous-requête?Optimiser la requête sql

Merci à l'avance

+0

si vous postez code, y compris SQL ou XML, ** ** S'il vous plaît mettre en évidence les lignes en question et utilisez le bouton "code" (101 010) sur la barre d'outils de l'éditeur pour bien les formater !! Cela rend tellement plus facile à lire et à comprendre! –

+0

@joseph le fait-il (cette syntaxe) fonctionne-t-il dans Oracle? http://stackoverflow.com/questions/2476206/optimize-the-sql-query/2476423#2476423 – garik

Répondre

5

vous pouvez supprimer un sous-requête si vous mettez à jour un ensemble de colonnes:

UPDATE employees 
    SET (job_id, salary) 
     = (SELECT job_id, salary FROM employees WHERE employee_id = 205) 
WHERE employee_id = 114; 
+0

+1 - Je ne savais pas que vous pouviez faire SET (job_id, salary) = SELECT (Job_id, Salary). Merci. –

+0

@Vincent, Cette syntaxe est-elle également applicable au serveur SQL? –

+0

Non, cela ne fonctionne pas dans le serveur sql (2005) – garik