2015-05-11 2 views
1

Любые плюсы и минусы на следующих способах извлечения сотрудников из отдела кадров? Особенно с точки зрения производительности?Эти запросы одинаковы?

--1 
select * from employee emp 
join department dep on emp.depId = dep.id and dep.name = 'HR'; 

--2 
select * from employee emp 
join (select * from department dep where dep.name='HR') d 
on emp.depId = d.id; 

--3 
select * from employee emp 
join department dep on emp.depId = dep.id 
where dep.name = 'HR'; 

P.S. Все они имеют такой же план запроса и стоимость

+3

Первый и третий являются идентичными (или должны быть) с точки зрения представление. Второй - это просто ненужный подзапрос, который слишком усложняет запрос, даже если он не влияет на производительность. –

+0

Вы должны проверить план выполнения, чтобы убедиться, что они похожи при выполнении. –

+0

@GordonLinoff Идея состояла в том, чтобы сделать соединение на столе с меньшим количеством строк для второго запроса – shadi

ответ

-1
--1 
select * from employee emp 
join department dep on emp.depId = dep.id and dep.name = 'HR'; 
  1. Для меня это лучший запрос, потому что вы подходите данные сотрудника в отделе, где данные кафедры HR им. Таким образом, вы ограничиваете данные из таблицы отделов в соединении.

    --2 выберите * от ого сотрудника присоединиться (выберите * из отдела отда где dep.name = 'HR') d на emp.depId = d.id;

  2. Это самый плохой запрос, потому что вспомогательный запрос всегда является дорогостоящим для РСУБД. поэтому сначала RDBMS выполнит вспомогательный запрос, а затем сопоставит его с таблицей сотрудников. Использование 3 полных таблиц чтения.

    --3 выберите * от сотрудника эми присоединиться отдел отд на emp.depId = dep.id где dep.name = 'HR';

  3. Это вариант, что почти каждый будет писать, и если вы видите план выполнения он преобразует в такой же, как 1.

+0

«Все они имеют одинаковый план и стоимость запроса» согласно op. –

+1

Большинство оптимизаторов просматривают эти производные таблицы. Именно так они могут сворачивать взгляды в основной трубопровод. –

Смежные вопросы