Тесты при

MagistrR
Дата: 14.06.2011 15:17:24
При приеме на работу мне были предложены задания для решения. Но не все они были решены правильно. И я бы хотел что бы знатоки подсказали правильное решение, что бы можно было их разобрать для повышения своего уровня.
Задание 1.
Имеется таблица
create table T (A int not null primary key, b int, c int, d float)
Как сократить время выполнения такого запроса
select b, sum(d) from T 
group by b?


Я предложил создать индекс в таблице по полю d. Скорее всего, я был неправ.
Гадя Петрович
Дата: 14.06.2011 15:18:37
MagistrR
Я предложил создать индекс в таблице по полю d. Скорее всего, я был неправ.
я бы сделал по b с включением d
MagistrR
Дата: 14.06.2011 15:26:15
Гадя Петрович,
Т.е. создать индекс по двум полям, по b и d?
индекс
Дата: 14.06.2011 15:28:36
MagistrR,

по полю b скорее вы предложили.
попробуйте вспомнить :)
MagistrR
Дата: 14.06.2011 15:34:37
индекс,
Нет, я предложил индекс по полю d. Я хотел предложить по полю b, но увидел что оно типа int и решил, что лучше индекс по полю d, т.к. оно float.
Гадя Петрович
Дата: 14.06.2011 15:36:38
MagistrR
Гадя Петрович,
Т.е. создать индекс по двум полям, по b и d?
нет
include
egaraev
Дата: 14.06.2011 15:51:11
Индекс по b включающий d я думаю самый подходящий.
MagistrR
Дата: 14.06.2011 16:08:56
Спасибо всем, значит мне надо больше читать про индексы.
Теперь следующая задача.

Напишите запрос, показывающий все отличия таблицы @tt от таблицы @t
declare @t table(x int NOT NULL, y int) 
declare @tt table(x int NOT NULL, y int) 
insert into @t values(1, 3) 
insert into @t values(2, 2) 
insert into @t values(3, NULL) 
insert into @t values(5, NULL)
insert into @tt values(1, 3)
insert into @tt values(3, NULL)
insert into @tt values(4, 3)

Мой ответ был
select * into #ttt from @t
  union all
select * from @tt

select x,y 
     from #ttt
   group by x,y
   having count(*) = 1

Может есть более красивый способ?
invm
Дата: 14.06.2011 16:17:00
select * from @tt
except
select * from @t
Касаемо первого вопроса -- ускорить можно создав из
select b, sum(d) from T 
group by b
индексированное представление
Критик
Дата: 14.06.2011 16:39:34
>>Мой ответ был

full join