|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
Дали такую вроде бы тривиальную задачу: Напишите быстрейший запрос вывода всех сотрудников работавших в определённый период времени. @date_start datetime @date_end datetime Исходная таблица: Table(user_id int, date_start datetime, date_end datetime) Мой ответ был таким, и он неправильный.: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 18:20 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
netivanДали такую вроде бы тривиальную задачу: Напишите быстрейший запрос вывода всех сотрудников работавших в определённый период времени. @date_start datetime @date_end datetime Исходная таблица: Table(user_id int, date_start datetime, date_end datetime) Мой ответ был таким, и он неправильный.: Код: plaintext 1.
в результирующем наборе не уникален user_id? date_end может быть null? и date_start? и user_id? Оо ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 18:24 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
netivanМой ответ был таким, и он неправильныйВ смысле недостаточно быстрый? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 18:25 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
netivan, а зачем в запросе слово datetime? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 18:27 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
netivanДали такую вроде бы тривиальную задачу: Напишите быстрейший запрос вывода всех сотрудников работавших в определённый период времени. @date_start datetime @date_end datetime Исходная таблица: Table(user_id int, date_start datetime, date_end datetime) Мой ответ был таким, и он неправильный.: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 18:32 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
ПаганельnetivanМой ответ был таким, и он неправильныйВ смысле недостаточно быстрый? не могу сказать.Данные только те, что я написал. Больше ничего сказать не знаю, увы. ChA да, видимо то что надо. СПс. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 18:48 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
при а) @date_end >= @date_start б) для всех date_start <= isnull(date_end, date_start) в) user_id date_start - обязательные поля есть 2 варианта 1) user_id уникален 2) уникальна пара user_id, date_start запрос 1 Код: plaintext 1. 2. 3. 4.
запрос 2 Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 18:55 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
netivan, классическая задачка по пересечению интервалов. можно пойти от обратного, найти всех кто нас не интересует, т.е. тех кто уже закончил работать на момент datestart или тех кто начал работать после интересующей нас dateend. where date_end < @date_start or date_start_datetime > @date_enddatetime. После этого взять обратное. where not (date_end < @date_start or date_start_datetime > @date_enddatetime). Если не хочется с отрицанием, то от not можно избавиться (по правилу деморгана, если не ошибаюсь). where date_end>=@date_start and date_start_datetime <= @date_enddatetime. если проговаривать словами то: выбрать те которые начались раньше конца интервала просмотра и закончились позже начала интервала просмотра. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 18:55 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
Что-то мне непонятно, зачем от таких запросов вообще можно требовать какую-то скорость Вряд ли объемы данных здоровенные И вряд ли такие запросы выполняются часто ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 18:59 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
SomewhereSomehow, ага, спасибо. Уже сам понял. Думаю с отрицанием или нет непринципиально , т.к. конкретных данных неизвестно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 19:00 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
Скока пустых слофф. Когда фсе элементарно Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 19:01 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
netivanага, спасибо. Уже сам понял. Думаю с отрицанием или нет непринципиально , т.к. конкретных данных неизвестно. самый быстрый запрос для неконкретных данных будет Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 19:04 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
netivan, кстати, рекомендую скачать (потому как наверное уже не продается) книжку "Кен Хендерсон - Профессиональное руководство Transact-SQL", там как раз разбирается именно такая задачка, подробно и с объяснениями (а так же много другой полезной инфы). Видимо, Хендерсон, был не настолько крут как наш местный чак норрис, по этому не посчитал задачу такой уж элементарной, и таки включил ее в свою книгу с подробными объяснениями. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 19:10 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
Зайцев Фёдорnetivanага, спасибо. Уже сам понял. Думаю с отрицанием или нет непринципиально , т.к. конкретных данных неизвестно. самый быстрый запрос для неконкретных данных будет Код: plaintext
Вы зря кушаете хлеб вашего работодателя. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 19:15 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
SomewhereSomehownetivan, кстати, рекомендую скачать (потому как наверное уже не продается) книжку "Кен Хендерсон - Профессиональное руководство Transact-SQL", там как раз разбирается именно такая задачка, подробно и с объяснениями (а так же много другой полезной инфы). Видимо, Хендерсон, был не настолько крут как наш местный чак норрис, по этому не посчитал задачу такой уж элементарной, и таки включил ее в свою книгу с подробными объяснениями. Что поделать? Дураков на свете больше, чем умных. Следовательно, нада рассчитывать на дураков. ЗЫ. А теперь, начитавшись Кен Хендерсона, поясните чего неправильного в запросе чака норриса. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 19:19 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
SomewhereSomehowВидимо, Хендерсон ... не посчитал задачу такой уж элементарной, и таки включил ее в свою книгу с подробными объяснениями.Задача действительно несложная, просто это тот самый случай, когда надо не только прочитать, но и правильно понять условия задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 19:21 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
aleks2Вы зря кушаете хлеб вашего работодателя. злой какой)) недавно уволили "ни за что"? ну поплачь, поплачь - тут все свои :-))) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 19:35 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
aleks2, Разве я сказал, что что-то неправильно? Вы все правильно написали, если обратите внимание, я тоже самое и написал чуть выше. Задача конечно несложная, когда уже знаешь в чем подвох, но раз ее дают как тесты (которые срабатывают, судя по этой ветке) и описывают в книжке - видимо и элементарной, с точки зрения новичка, тоже не назовешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 19:41 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
Зайцев Фёдор Код: plaintext 1.
приведет к сканированию всей таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 23:06 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
Не думал что получится такой резонанс.Задача скорее на внимание и логику, чем на SQL)). Надо было просто нарисовать и все становится сразу ясно, а не сразу писать запрос. А книгу посмотрю, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 11:14 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
FantomGoodЗайцев Фёдор Код: plaintext 1.
приведет к сканированию всей таблицы как и любой другой запрос. в упор не вижу индексов ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 21:00 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5.
м.б. так? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2011, 19:30 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
aleks2Скока пустых слофф. Когда фсе элементарно Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2011, 20:08 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
кстати, кто нить знает оптимальный индекс под такой запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2011, 22:05 |
|
дали задачку, не могу найти подвох.
|
|||
---|---|---|---|
#18+
lockyкстати, кто нить знает оптимальный индекс под такой запрос?Увели логин, или у меня битые ссылки памяти? А вообще сразу вспомнил старое: 5582232, 6236024, как раз ветка с вами заканчивающая где-то здесь , и немного про индексы Некоторые так и остались без ответа проигнорированы. Не думаю что ответят, скорее шапками закидают. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2011, 02:30 |
|
|
start [/forum/topic.php?fid=46&tid=1711221]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
25ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 146ms |
0 / 0 |