2010-03-19 2 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; 

Это вопрос, который я использовал. Здесь я использую 2 подзапроса, но они имеют одинаковое условие. Время поиска удваивается. Есть ли способ оптимизировать весь запрос в одном подзапросе?Оптимизируйте запрос sql

Заранее спасибо

+0

если вы разместите код, включая SQL или XML, ** пожалуйста ** выделить те строки, о которых идет речь и используйте кнопку «code» (101 010) на панели инструментов редактора, чтобы их красиво отформатировать! Делает это просто так просто читать и понимать! –

+0

@joseph делает это (этот синтаксис) в oracle? http://stackoverflow.com/questions/2476206/optimize-the-sql-query/2476423#2476423 – garik

ответ

5

вы можете удалить подзапрос, если вы обновляете набор столбцов:

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

+1 - Я не знал, что вы можете сделать SET (job_id, зарплата) = SELECT (Job_id, Salary). Спасибо. –

+0

@Vincent. Является ли этот синтаксис применимым и для SQL-сервера? –

+0

Нет, он не работает в sql-сервере (2005) – garik