Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
Господа, кто-то знает более быстрые способы перевода даты (DATE/DATETIME) в число, кроме вот этих ? 30 дек 2018 (DATE/DATETIME) -> 20181230 (INT) интересует скорость в SELECT и WHERE Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2019, 13:45 |
|
||
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
a_voronin (DATE/DATETIME) -> (INT) Я, конечно, понимаю что легаси и все такое, но int - 4 байта date - 3 байта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2019, 13:49 |
|
||
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
msLex, Угу, легаси... Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2019, 13:56 |
|
||
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
msLex a_voronin (DATE/DATETIME) -> (INT) Я, конечно, понимаю что легаси и все такое, но int - 4 байта date - 3 байта Не все легаси -- в хранилищах есть рекомендация использовать INT вместо дат. К тому же DATETIME больше INT И DATE_INT / 10000 -- получили год и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2019, 14:10 |
|
||
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
a_voronin в хранилищах есть рекомендация использовать INT вместо дат Хмм, можно ссылку на современные рекомендации? a_voronin К тому же DATETIME больше INT Ага, только 20190101000000 (это только до секунды) уже в INT не влезет, нужно BIGINT, что 8 байт. При этом datetime2, с точностью до 3 знаков после секунды, занимает 6 байт a_voronin И DATE_INT / 10000 -- получили год и т.п. т.е. вот такой "костыль", это нормально, а year(date_date) нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2019, 14:21 |
|
||
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
Minamoto msLex, Угу, легаси... Код: sql 1. 2. 3. 4. 5. Это вы так не легаси пытаетесь показать? Да это еще с SQL 2000 (а может и с 7.0) так хранится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2019, 14:24 |
|
||
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
msLex Это вы так не легаси пытаетесь показать? Да это еще с SQL 2000 (а может и с 7.0) так хранится. Это был не сарказм, а намек на то, что легаси, еще и введенный самим Майкрософтом, так что иногда приходится с этим иметь дело, даже если очень не хочется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2019, 14:26 |
|
||
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
Minamoto msLex Это вы так не легаси пытаетесь показать? Да это еще с SQL 2000 (а может и с 7.0) так хранится. Это был не сарказм, а намек на то, что легаси, еще и введенный самим Майкрософтом, так что иногда приходится с этим иметь дело, даже если очень не хочется. Ок. Но это не делает чести "парням из Редмонда" Вообще, структура хранение информации о джобах в msdb не та вещь, которой Майкрософт может гордиться (ну это уже совсем оффтоп). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2019, 14:29 |
|
||
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
msLex a_voronin (DATE/DATETIME) -> (INT) Я, конечно, понимаю что легаси и все такое, но int - 4 байта date - 3 байта Может, DATEDIFF(DAY,0,a.create_date)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2019, 14:34 |
|
||
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
Дело-то в том, что искусственно увеличивают размер хранимых данных, при это выполняя дополнительные преобразования, с перфомансом которых потом борются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2019, 14:44 |
|
||
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
msLex А вы уверены, что правы на 100%? Например, если взять колумнстор, если взять ключи измерений в SSAS. 3 байта надо конвертировать в 8 на 64 битных средах. А если надо считать кол-во уникальных дней? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2019, 14:57 |
|
||
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
[quot msLex#22017237] a_voronin в хранилищах есть рекомендация использовать INT вместо дат Хмм, можно ссылку на современные рекомендации? наиболее распространена ситуация, когда DATETIME типа ORDER_DATE, превращают в INT 4 байта. Можете почитать вот это https://dwbi1.wordpress.com/2009/12/16/date-dimension-in-analysis-services-part-2/ И вот это https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/books/data-warehouse-dw-lifecycle-toolkit/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2019, 15:02 |
|
||
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
a_voronin А вы уверены, что правы на 100%? Нет, поэтому я и просил ссылки на современные рекомендации. a_voronin Например, если взять колумнстор Тут не сложно проверить date vs int Провел небольшой тест на 100 млн записей с датой +/- 1 год от текущих данных. date занимает меньше чем int a_voronin А если надо считать кол-во уникальных дней? И чем здесь выигрывает int у date? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2019, 15:23 |
|
||
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
a_voronin msLex a_voronin в хранилищах есть рекомендация использовать INT вместо дат Хмм, можно ссылку на современные рекомендации? наиболее распространена ситуация, когда DATETIME типа ORDER_DATE, превращают в INT 4 байта. Можете почитать вот это https://dwbi1.wordpress.com/2009/12/16/date-dimension-in-analysis-services-part-2/ И вот это https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/books/data-warehouse-dw-lifecycle-toolkit/ Спасибо, но Во-первых, я просил свежие (2008 и 2009 год это совсем не то) Во-вторых, почему вы сравниваете datetime и int? Я предлагал date. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2019, 15:27 |
|
||
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/books/data-warehouse-dw-lifecycle-toolkit/ По сслыке книга 2008 года вот с таким вот вступлением: The world of data warehousing and business intelligence has changed remarkably since the first edition of The Data Warehouse Lifecycle Toolkit was published in 1998. Ralph Kimball and the Kimball Group refined the original set of lifecycle methods and techniques. Уже 11 лет прошло с публикации этой книги, и я думаю что можно тоже самое и сейчас сказать, в общем дату уже можно использовать в мето инта... И давайте уже не будем СТОЛБЦЫ_ВОТ_ТАК_НАЗЫВАТЬ? [И] [вот] [так] [квадратные] [скобочки] [ставить]? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2019, 17:38 |
|
||
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
Владимир Затуливетер, Вы упорно упускаете главный момент. Фильтрация таблицы фактов по ключу даты не главная операция, которая происходит в DWH. Таблица фактов часто используется ОЛАП кубами, где есть календари основанные на INT. Также у меня есть сомнения, что вы делал OLAP кубы и знаете нюансы использование полей различных типов там. Также данные могут выгружаться в другие виды БД, например ORACLE или Vertica и там другие расклады по месту с скорости фильтрации. https://stackoverflow.com/questions/44934126/why-is-datekey-in-fact-tables-always-int https://www.codeproject.com/Articles/1060016/Creating-Date-dimension-from-scratch-in-Microsoft ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2019, 08:44 |
|
||
|
конвертации даты в число (быстрая)
|
|||
|---|---|---|---|
|
#18+
a_voronin, Кубы я не делаю, давно игрался, поэтому тонкостей не знаю. Знающие люди пусть ответят подтвердят что с типом Date какие-то проблемы в OLAP для sql server >= 2014 (в чем я сильно сомневаюсь, инфы такой в интернетах не нашел). И попутно вопрос, а во время выгрузки в olap нельзя преобразовать дату в int если это так важно. На крайний случай нельзя создать вычисляемы столбец DateInt на таблице и использовать его? То что касается выгрузки, это вообще не аргумент, если надо выгружать что-то преобразуйте в нужный тип во время выгрузки, не надо для этого делать кривые базы. А то что касается преимуществ использования date в место int то вот они: 1. Date занимает меньше места 3 байта, для int это 4 байта. 2. Получение данных из фактов простыми запросами без джойна дименшена Date. Оптимизатору намного проще получить выполнить запрос select * from dbo.SomeFactTable where Date between '20190101' and '20190201' чем запрос с джойном. 3. Нет проблем с функциями которые работают с датами. 4. Не надо писать уродские запросы, где мы преобразовываем int в дату 5. Пользователю более понятна дата, а не int в котором дата 6. Невозможно вставить не валидную дату, меньше потенциальных ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2019, 17:12 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39889633&tid=1686930]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
36ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 338ms |

| 0 / 0 |
