Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Тестовое задание как понять?  [new]
sposad
Member

Откуда:
Сообщений: 62187
Вот тестик маленький
Как бы вы оптимизировали следующий запрос (показан полный скрипт таблицы; приведите обоснование своего выбора)?
create table dbo.detections (
id 			int		identity	primary key clustered
,	prdict 			varchar(64)	not null
,	detection_date 		datetime	not null
,	subsystem 		varchar(32)	not null
,	os_version 		varchar(128)	not null
,	detections_cnt		int		not null
)

select *
from dbo.detections
where prdict = @a and detection_date > @b and subsystem = @c 

как его понять? данных в таблице нет, работа индексов будет зависеть от того, насколько селективны они получатся, как можно оптимизировать запрос без конкретных данных?
14 июн 16, 11:24    [19290407]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2567
sposad,

возможно, хотели услышать, сколько и каких индексов нужно будет создать? А так будет просто скан кластерного индекса и усё.
14 июн 16, 11:37    [19290479]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
PaulYoung,

возможно про некластерный

prdict,subsystem,detection_date INCLUDE(os_version,detections_cnt,id)
14 июн 16, 11:49    [19290567]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Наверно, намёк на то, что кроме индексов в SELECTе вместо звёздочки должен быть список возвращаемых полей?
14 июн 16, 11:54    [19290604]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
наверное ещё нормализация - вынос os_version в отдельный справочник, что такое prdict не представлю :)
14 июн 16, 11:59    [19290638]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5121
ИМХО, суть задания вот в этом "приведите обоснование своего выбора"
14 июн 16, 12:02    [19290654]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
sposad
Member

Откуда:
Сообщений: 62187
iap
Наверно, намёк на то, что кроме индексов в SELECTе вместо звёздочки должен быть список возвращаемых полей?
ну это уж совсем непонятно для кого
14 июн 16, 12:07    [19290681]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
sposad
Как бы вы оптимизировали следующий запрос.
Если подходить формально, то ответ - никак.
Оптимизация запроса подразумевает его переписывание. А переписывать тут нечего.
14 июн 16, 12:21    [19290771]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
o-o
Guest
ну например у нас такое делают некоторые,
хотят просто посмотреть пару строк таблицы и им наплевать,
что там пара сотен гиг.
запустят такое, поглядят, новое окно откроют, а старое все фетчит.
через полчаса спрашиваю мадам, зачем ей все 200Гиг,
она в ответ: а разве это я?
ой! забыла окно закрыть.
такоим надо объяснить, что есть top 10 *
ну вот типа и оптимизировали.
---
поэтому у меня первый вопрос, а сколько там строк.
или коту делать нечего, он запросы оптимизирует...?
14 июн 16, 12:42    [19290906]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
o-o,

TOP 10 сложно назвать оптимизацией запроса :)
14 июн 16, 12:47    [19290935]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
:-^^^
Guest
sposad,

мне кажется это просто некорректный пример. Уточнили бы что требуется. ИМХО, речь тут про индексы, а не про звездочки и нормализацию и т.п.

Хотя, повторюсь, пример дурацкий, не описан, тут можно "оптимизировать" до бесконечности.
14 июн 16, 12:52    [19290968]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
o-o
Guest
я локализирую проблему.
которой может и нет.

сколько строк в таблице, 10?
идите дальше оптимизируйте, см. про кота :)

ах там 10млн строк?
а кто их читать собрался, девочка на экране?
посчитаем вместе, сколько она без выходных это будет листать?
и окажется, что нужен там top.

как же не оптимизация.
сервер не грузит, все довольны
14 июн 16, 12:53    [19290989]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
o-o,

автор
данных в таблице нет

речь скорее про проектирование архитектуры и это собеседование так что как раз всё можно и включать и нормализацию и индексы, дополнительные статистики и прогнозируемый объём данных и изменение запроса
14 июн 16, 12:57    [19291013]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
o-o
Guest
вот еще я за них отгадывать буду.
надо первым делом спрашивать, а вас что тут не устраивает, граждане?
14 июн 16, 13:04    [19291050]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
o-o,

автор
вот еще я за них отгадывать буду.

а ещё недавно отгадывали и очень продуктивно :)
14 июн 16, 13:10    [19291085]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
o-o
Guest
TaPaK
o-o,

автор
вот еще я за них отгадывать буду.

а ещё недавно отгадывали и очень продуктивно :)

а вот у меня внезапная смена стиля.
привалило отгадывать то, на что фантазии не хватает.
сразу понимаешь ограниченность собственного воображения и руки опускаются.
а может, у меня просто велосипеда нет и я вредничаю,
потому что в последнее время народ ленится даже назвать вещи своими именами.
если у тебя проблема с identity, зачем нам про ПК рассказываешь, да?
а тут "оптимизация ради оптимизации".
еще проблемы нет, а ее уже себе надумали и другим предложили
14 июн 16, 13:20    [19291131]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
Cane Cat Fisher
Member

Откуда:
Сообщений: 1809
invm
Если подходить формально, то ответ - никак.
Оптимизация запроса подразумевает его переписывание. А переписывать тут нечего.


А они ответят: Ну если подходить формально, то с заданием вы не справились.
14 июн 16, 13:53    [19291303]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
sposad
Member

Откуда:
Сообщений: 62187
Cane Cat Fisher
invm
Если подходить формально, то ответ - никак.
Оптимизация запроса подразумевает его переписывание. А переписывать тут нечего.


А они ответят: Ну если подходить формально, то с заданием вы не справились.

Ну и ладно, у меня не горит.

Спасибо всем за варианты телепатии, а то я уж подумал, что совсем тупой и не вижу того, что другим понятно с лёту:)
14 июн 16, 13:57    [19291330]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
sposad,

был как то срач на эту тему.
Почитайте, есть интересные посты: https://www.sql.ru/forum/1152643/kakie-varianty-optimizacii
14 июн 16, 15:10    [19291701]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
sposad
Вот тестик маленький
Как бы вы оптимизировали следующий запрос (показан полный скрипт таблицы; приведите обоснование своего выбора)?
create table dbo.detections (
id 			int		identity	primary key clustered
,	prdict 			varchar(64)	not null
,	detection_date 		datetime	not null
,	subsystem 		varchar(32)	not null
,	os_version 		varchar(128)	not null
,	detections_cnt		int		not null
)

select *
from dbo.detections
where prdict = @a and detection_date > @b and subsystem = @c 

как его понять? данных в таблице нет, работа индексов будет зависеть от того, насколько селективны они получатся, как можно оптимизировать запрос без конкретных данных?



ну, мудрацкий вопрос, да, ты это хотел услышать?
Вопрос на то, какой индекс надо создать под этот запрос. Индекс составной, поэтому надо правильно указать порядок полей в индексе.

кстати, в вопросе ничего нет про есть ли там данные или нет. кроме этого, селективность по полям вполне можно предугадать, и к тому же по полям составного индекса редко когда бывает низкая селективность, ибо вероятности перемножаются.
15 июн 16, 11:41    [19294898]     Ответить | Цитировать Сообщить модератору
 Re: Тестовое задание как понять?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
2MasterZiv,

Вы на второй круг обсуждения заходите, что ли? Еще год назад разобрали все.
15 июн 16, 12:57    [19295313]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить