Size: a a a

SqlCom.ru - Стиль жизни SQL

2020 October 18

A

Alexey in SqlCom.ru - Стиль жизни SQL
Рустам
Здравствуйте!
Подскажите где можно скачать базу данных для ms sql server для тренировок!
источник

А

Анна in SqlCom.ru - Стиль жизни SQL
Ребят, а кто- нибудь может подсказать, как лучше посчитать среднее количество дней между покупками : процентилем, модой или средним арифметическим?  Скажем, есть покупатель, расстояние между покупками прошло : 2,3,4,5,5,6,7,7,4, 8, 2, 4,10,20 дней .  И второй вопрос, почему сервер округляет  в меньшую сторону, скажем есть число 4,83 - среднее ариф,, он показывает как  просто 4. ☺️
источник

АА

Андрей Агеев... in SqlCom.ru - Стиль жизни SQL
Анна
Ребят, а кто- нибудь может подсказать, как лучше посчитать среднее количество дней между покупками : процентилем, модой или средним арифметическим?  Скажем, есть покупатель, расстояние между покупками прошло : 2,3,4,5,5,6,7,7,4, 8, 2, 4,10,20 дней .  И второй вопрос, почему сервер округляет  в меньшую сторону, скажем есть число 4,83 - среднее ариф,, он показывает как  просто 4. ☺️
select 1/2[int],1.0/2[num] - это почему "округляет"
источник

А

Анна in SqlCom.ru - Стиль жизни SQL
Андрей Агеев
select 1/2[int],1.0/2[num] - это почему "округляет"
Не поняла, т.е. он int в меньшую округляет, а num нет?
источник

АА

Андрей Агеев... in SqlCom.ru - Стиль жизни SQL
Анна
Не поняла, т.е. он int в меньшую округляет, а num нет?
Сервер не округляет, а оперирует
Результат операций зависит от типов данных
источник

АА

Андрей Агеев... in SqlCom.ru - Стиль жизни SQL
Выбирайте правильный тип данных для ваших операций
источник

А

Анна in SqlCom.ru - Стиль жизни SQL
Андрей Агеев
Выбирайте правильный тип данных для ваших операций
Я просто не знаю, как это сделать. У меня есть числа полученные в результате разницы между датами с помощью datediff. И потом я группирую и беру скажем среднее от этих чисел. И там он мне в меньшую сторону и выдает. Т.е. мне нужно cast применить?
источник

А

Анна in SqlCom.ru - Стиль жизни SQL
Андрей Агеев
Выбирайте правильный тип данных для ваших операций
Ой, получилось, спасибо:))) cast сделала
источник

АА

Андрей Агеев... in SqlCom.ru - Стиль жизни SQL
Анна
Ой, получилось, спасибо:))) cast сделала
👍🏻
источник

AM

Artem Muravlev in SqlCom.ru - Стиль жизни SQL
Добрый вечер Господа.
Прошу помощи в вопросе партиционирования SQL таблиц так как раньше не занимался таким делом.

В системе строим достаточно сложные отчеты в процедурах на основе логов. Таблица с логами занимает примерно 8 Гбайт, индексов к данной таблице 5 Гбайт. Существует набор полей описывающих лог + дата действия на основании которого была запись в лог (д1) + дата действия «корректировки д1» (д2) + дата создания записи лога(д3).
Д1 и д2 могут отличаться на пару дней.
В основном строим отчеты опираясь либо на д1, либо на д2. Данные даты равнозначны по степени использования. Отчеты в основном строятся за предыдущие пару лет, устаревшие данные в архив не могу положить так как их ооочень редко используют.

Из разбиения хотелось бы создать 2 патриции, одна из которых бы содержала данные до 2018 года, а вторая все свежие. Партиционировать собираюсь опираясь на дату д3 создав глобальные индексы по ключам д1 и д2, саму дату д3 при поиске в запросах редко где использую. Будет ли быстрее работать такое разделение, или может как то по другому сделать?
источник

AM

Artem Muravlev in SqlCom.ru - Стиль жизни SQL
* База Sybase Ase 15.5
источник

OM

Oleg Makarikhin in SqlCom.ru - Стиль жизни SQL
Artem Muravlev
Добрый вечер Господа.
Прошу помощи в вопросе партиционирования SQL таблиц так как раньше не занимался таким делом.

В системе строим достаточно сложные отчеты в процедурах на основе логов. Таблица с логами занимает примерно 8 Гбайт, индексов к данной таблице 5 Гбайт. Существует набор полей описывающих лог + дата действия на основании которого была запись в лог (д1) + дата действия «корректировки д1» (д2) + дата создания записи лога(д3).
Д1 и д2 могут отличаться на пару дней.
В основном строим отчеты опираясь либо на д1, либо на д2. Данные даты равнозначны по степени использования. Отчеты в основном строятся за предыдущие пару лет, устаревшие данные в архив не могу положить так как их ооочень редко используют.

Из разбиения хотелось бы создать 2 патриции, одна из которых бы содержала данные до 2018 года, а вторая все свежие. Партиционировать собираюсь опираясь на дату д3 создав глобальные индексы по ключам д1 и д2, саму дату д3 при поиске в запросах редко где использую. Будет ли быстрее работать такое разделение, или может как то по другому сделать?
Для такого (семантического партиционирования) нужна лицензия на партиционирование, она есть?
источник

AM

Artem Muravlev in SqlCom.ru - Стиль жизни SQL
Скорей всего нет специальной(( завтра поспрашиваю у админов.
источник

OM

Oleg Makarikhin in SqlCom.ru - Стиль жизни SQL
Artem Muravlev
Скорей всего нет специальной(( завтра поспрашиваю у админов.
есть хранимая процедура которая возвращает список лицензий. http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc36273.1550/html/sprocs/BABFJGAJ.htm
а, хотя она требует 'You must be a System Administrator to execute sp_lmconfig.'
лиц. называется ASE_PARTITIONS
источник

AM

Artem Muravlev in SqlCom.ru - Стиль жизни SQL
У меня такой роли нет ((
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Анна
Я просто не знаю, как это сделать. У меня есть числа полученные в результате разницы между датами с помощью datediff. И потом я группирую и беру скажем среднее от этих чисел. И там он мне в меньшую сторону и выдает. Т.е. мне нужно cast применить?
Convert, cast
источник

А

Анна in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Convert, cast
Да, спасибо,я так и сделала😎
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Artem Muravlev
Добрый вечер Господа.
Прошу помощи в вопросе партиционирования SQL таблиц так как раньше не занимался таким делом.

В системе строим достаточно сложные отчеты в процедурах на основе логов. Таблица с логами занимает примерно 8 Гбайт, индексов к данной таблице 5 Гбайт. Существует набор полей описывающих лог + дата действия на основании которого была запись в лог (д1) + дата действия «корректировки д1» (д2) + дата создания записи лога(д3).
Д1 и д2 могут отличаться на пару дней.
В основном строим отчеты опираясь либо на д1, либо на д2. Данные даты равнозначны по степени использования. Отчеты в основном строятся за предыдущие пару лет, устаревшие данные в архив не могу положить так как их ооочень редко используют.

Из разбиения хотелось бы создать 2 патриции, одна из которых бы содержала данные до 2018 года, а вторая все свежие. Партиционировать собираюсь опираясь на дату д3 создав глобальные индексы по ключам д1 и д2, саму дату д3 при поиске в запросах редко где использую. Будет ли быстрее работать такое разделение, или может как то по другому сделать?
На две партиции бить нет никакого смысла.
Да и запросы ваши от этого не выиграют никак
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Artem Muravlev
Добрый вечер Господа.
Прошу помощи в вопросе партиционирования SQL таблиц так как раньше не занимался таким делом.

В системе строим достаточно сложные отчеты в процедурах на основе логов. Таблица с логами занимает примерно 8 Гбайт, индексов к данной таблице 5 Гбайт. Существует набор полей описывающих лог + дата действия на основании которого была запись в лог (д1) + дата действия «корректировки д1» (д2) + дата создания записи лога(д3).
Д1 и д2 могут отличаться на пару дней.
В основном строим отчеты опираясь либо на д1, либо на д2. Данные даты равнозначны по степени использования. Отчеты в основном строятся за предыдущие пару лет, устаревшие данные в архив не могу положить так как их ооочень редко используют.

Из разбиения хотелось бы создать 2 патриции, одна из которых бы содержала данные до 2018 года, а вторая все свежие. Партиционировать собираюсь опираясь на дату д3 создав глобальные индексы по ключам д1 и д2, саму дату д3 при поиске в запросах редко где использую. Будет ли быстрее работать такое разделение, или может как то по другому сделать?
Лучше дай DDL таблицы и примерный запрос, лучше только WHERE.

Тогда можно будет что-то сказать
источник
2020 October 19

AM

Artem Muravlev in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Лучше дай DDL таблицы и примерный запрос, лучше только WHERE.

Тогда можно будет что-то сказать
Постарался примерно сделать ДДЛ и запрос. Полностью повторить ситуацию не могу)) У меня процедуры по 1500 - 2000 строк в среднем. Таблица логов используется часто, в основном специфичные выборки.

https://pastebin.com/vPH2qPz9
источник