powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Microsoft SQL Server [закрыт для гостей] / Нужно нестандартное решение
22 сообщений из 22, страница 1 из 1
Нужно нестандартное решение
    #320979
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть несколько таблиц, в которых хранится много однотипных значений. Типа такой
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
CREATE TABLE [dbo].[l_val32](
  [adt] [datetime] NOT NULL,
  [cdt] [datetime] NOT NULL,
  [g_id] [smallint] NOT NULL,
  [v1] [smallmoney] NULL,
  [v2] [smallmoney] NULL,
  [v3] [smallmoney] NULL,
  [v4] [smallmoney] NULL,
  [v5] [smallmoney] NULL,
  [v6] [smallmoney] NULL,
  [v7] [smallmoney] NULL,
  [v8] [smallmoney] NULL,
  [v9] [smallmoney] NULL,
  [v10] [smallmoney] NULL,
  [v11] [smallmoney] NULL,
  [v12] [smallmoney] NULL,
  [v13] [smallmoney] NULL,
  [v14] [smallmoney] NULL,
  [v15] [smallmoney] NULL,
  [v16] [smallmoney] NULL,
  [v17] [smallmoney] NULL,
  [v18] [smallmoney] NULL,
  [v19] [smallmoney] NULL,
  [v20] [smallmoney] NULL,
  [v21] [smallmoney] NULL,
  [v22] [smallmoney] NULL,
  [v23] [smallmoney] NULL,
  [v24] [smallmoney] NULL,
  [v25] [smallmoney] NULL,
  [v26] [smallmoney] NULL,
  [v27] [smallmoney] NULL,
  [v28] [smallmoney] NULL,
  [v29] [smallmoney] NULL,
  [v30] [smallmoney] NULL,
  [v31] [smallmoney] NULL,
  [v32] [smallmoney] NULL
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[l_val32] ADD  CONSTRAINT [DF_l_val32_cdt]  DEFAULT (getdate()) FOR [cdt]
GO

ALTER TABLE [dbo].[l_val32]  WITH CHECK ADD  CONSTRAINT [FK_l_val32_r_groups] FOREIGN KEY([g_id])
REFERENCES [dbo].[r_groups] ([gid])
GO

ALTER TABLE [dbo].[l_val32] CHECK CONSTRAINT [FK_l_val32_r_groups]
GO
Столбцов может быть и больше. Выборки из этих таблиц делаются с помощью динамического SQL. Долго думал, как отказаться от динамики, но так ничего и не придумал. Формируются эти динамки в тот момент, когда пользователь решает, какие столбцы ему будут нужны для дальнейшей работы. Динамка может состоять из нескольких запросов, объединенных юнионами, если пользователю нужны данные из нескольких таких таблиц, например, l_val32 и l_val64. После того, как пользователь сформировал свой запрос, он его юзает, накладывая условия по времени.

Возникла хотелка подменять отдельные значения по минимуму / максимуму. То есть, для определенного столбца (не для всех) определить минимум и максимум, и если реальное значение выходит за рамки, то возвращать пользователю допустимые минимум или максимум.

Эту подмену мы можем делать в трех местах. На стадии вставки данных в таблицу, на стадии хранения (по заданию), на стадии запроса.
Если на стадии вставки, то это триггер, и в нем опять же будет динамика.
Если на стадии хранения, то вообще ничего сложного, лопать себе да лопать, начиная с последнего места. Единственный минус - задержки в обработке данных.
Если на стадии выдачи данных пользователю - самое интересное. И самое вкусное, поскольку исходные данные остаются нетронутыми на тот случай, когда их надо будет посмотреть.

Я помню, мне многие советовали не хранить данные горизонтально, но мне до сих пор кажется дикостью хранить такое количество данных вертикально.

ЗЫ За пол-года базешка уже за 5 гигов перевалила, и это только тренировка.
...
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326209
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Просто Трёп  10.03.2023, 12:03
[игнорируется]
Есть несколько таблиц, в которых хранится много однотипных значений. Типа такой
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
CREATE TABLE [dbo].[l_val32](
  [adt] [datetime] NOT NULL,
  [cdt] [datetime] NOT NULL,
  [g_id] [smallint] NOT NULL,
  [v1] [smallmoney] NULL,
  [v2] [smallmoney] NULL,
  [v3] [smallmoney] NULL,
  [v4] [smallmoney] NULL,
  [v5] [smallmoney] NULL,
  [v6] [smallmoney] NULL,
  [v7] [smallmoney] NULL,
  [v8] [smallmoney] NULL,
  [v9] [smallmoney] NULL,
  [v10] [smallmoney] NULL,
  [v11] [smallmoney] NULL,
  [v12] [smallmoney] NULL,
  [v13] [smallmoney] NULL,
  [v14] [smallmoney] NULL,
  [v15] [smallmoney] NULL,
  [v16] [smallmoney] NULL,
  [v17] [smallmoney] NULL,
  [v18] [smallmoney] NULL,
  [v19] [smallmoney] NULL,
  [v20] [smallmoney] NULL,
  [v21] [smallmoney] NULL,
  [v22] [smallmoney] NULL,
  [v23] [smallmoney] NULL,
  [v24] [smallmoney] NULL,
  [v25] [smallmoney] NULL,
  [v26] [smallmoney] NULL,
  [v27] [smallmoney] NULL,
  [v28] [smallmoney] NULL,
  [v29] [smallmoney] NULL,
  [v30] [smallmoney] NULL,
  [v31] [smallmoney] NULL,
  [v32] [smallmoney] NULL
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[l_val32] ADD  CONSTRAINT [DF_l_val32_cdt]  DEFAULT (getdate()) FOR [cdt]
GO

ALTER TABLE [dbo].[l_val32]  WITH CHECK ADD  CONSTRAINT [FK_l_val32_r_groups] FOREIGN KEY([g_id])
REFERENCES [dbo].[r_groups] ([gid])
GO

ALTER TABLE [dbo].[l_val32] CHECK CONSTRAINT [FK_l_val32_r_groups]
GO
Столбцов может быть и больше. Выборки из этих таблиц делаются с помощью динамического SQL. Долго думал, как отказаться от динамики, но так ничего и не придумал. Формируются эти динамки в тот момент, когда пользователь решает, какие столбцы ему будут нужны для дальнейшей работы. Динамка может состоять из нескольких запросов, объединенных юнионами, если пользователю нужны данные из нескольких таких таблиц, например, l_val32 и l_val64. После того, как пользователь сформировал свой запрос, он его юзает, накладывая условия по времени.

Возникла хотелка подменять отдельные значения по минимуму / максимуму. То есть, для определенного столбца (не для всех) определить минимум и максимум, и если реальное значение выходит за рамки, то возвращать пользователю допустимые минимум или максимум.

Эту подмену мы можем делать в трех местах. На стадии вставки данных в таблицу, на стадии хранения (по заданию), на стадии запроса.
Если на стадии вставки, то это триггер, и в нем опять же будет динамика.
Если на стадии хранения, то вообще ничего сложного, лопать себе да лопать, начиная с последнего места. Единственный минус - задержки в обработке данных.
Если на стадии выдачи данных пользователю - самое интересное. И самое вкусное, поскольку исходные данные остаются нетронутыми на тот случай, когда их надо будет посмотреть.

Я помню, мне многие советовали не хранить данные горизонтально, но мне до сих пор кажется дикостью хранить такое количество данных вертикально.

ЗЫ За пол-года базешка уже за 5 гигов перевалила, и это только тренировка.
Это не sql почитай про хотя бы 3 нормальные формы, а лучьше, до пятой , седьмой, так можно и все хранить.

Это не база данных. Хранить то можно, запросы сделать не возможно. И не рационално место и индексы используются.
...
Изменено: 15.03.2023, 19:42 - Sparrow
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326214
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Нужно вникнуть в предметную область, что там хранится и зачем?
Не бывет абстрактных баз, это тупиковый путь.
Бывают конкретные.

Так не бывает, что к одному ключу много значений.
...
Изменено: 15.03.2023, 19:42 - Sparrow
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326227
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sparrow  15.03.2023, 19:33
[игнорируется]
что там хранится и зачем?
Показания датчиков, снятые с устройства одномоментно. То есть, одно снятие показаний - одна метка времени и 60 значений. Снятие может быть раз в две секунды. При выборке нужно только время. Отбора по показаниям нет.
...
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326228
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вообще это похоже на олап.
Надо в экселе такое делать или во внешнем клиенте, если он не знает , что хочет.
Дать данные там пусть работает , но это дорого, с точки зрения sql.
Обычно олап кубы ночью готовят, утром дают.
...
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326234
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Просто Трёп  10.03.2023, 12:03
[игнорируется]
Есть несколько таблиц, в которых хранится много однотипных значений. Типа такой
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
CREATE TABLE [dbo].[l_val32](
  [adt] [datetime] NOT NULL,
  [cdt] [datetime] NOT NULL,
  [g_id] [smallint] NOT NULL,
  [v1] [smallmoney] NULL,
  [v2] [smallmoney] NULL,
  [v3] [smallmoney] NULL,
  [v4] [smallmoney] NULL,
  [v5] [smallmoney] NULL,
  [v6] [smallmoney] NULL,
  [v7] [smallmoney] NULL,
  [v8] [smallmoney] NULL,
  [v9] [smallmoney] NULL,
  [v10] [smallmoney] NULL,
  [v11] [smallmoney] NULL,
  [v12] [smallmoney] NULL,
  [v13] [smallmoney] NULL,
  [v14] [smallmoney] NULL,
  [v15] [smallmoney] NULL,
  [v16] [smallmoney] NULL,
  [v17] [smallmoney] NULL,
  [v18] [smallmoney] NULL,
  [v19] [smallmoney] NULL,
  [v20] [smallmoney] NULL,
  [v21] [smallmoney] NULL,
  [v22] [smallmoney] NULL,
  [v23] [smallmoney] NULL,
  [v24] [smallmoney] NULL,
  [v25] [smallmoney] NULL,
  [v26] [smallmoney] NULL,
  [v27] [smallmoney] NULL,
  [v28] [smallmoney] NULL,
  [v29] [smallmoney] NULL,
  [v30] [smallmoney] NULL,
  [v31] [smallmoney] NULL,
  [v32] [smallmoney] NULL
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[l_val32] ADD  CONSTRAINT [DF_l_val32_cdt]  DEFAULT (getdate()) FOR [cdt]
GO

ALTER TABLE [dbo].[l_val32]  WITH CHECK ADD  CONSTRAINT [FK_l_val32_r_groups] FOREIGN KEY([g_id])
REFERENCES [dbo].[r_groups] ([gid])
GO

ALTER TABLE [dbo].[l_val32] CHECK CONSTRAINT [FK_l_val32_r_groups]
GO
Столбцов может быть и больше. Выборки из этих таблиц делаются с помощью динамического SQL. Долго думал, как отказаться от динамики, но так ничего и не придумал. Формируются эти динамки в тот момент, когда пользователь решает, какие столбцы ему будут нужны для дальнейшей работы. Динамка может состоять из нескольких запросов, объединенных юнионами, если пользователю нужны данные из нескольких таких таблиц, например, l_val32 и l_val64. После того, как пользователь сформировал свой запрос, он его юзает, накладывая условия по времени.

Возникла хотелка подменять отдельные значения по минимуму / максимуму. То есть, для определенного столбца (не для всех) определить минимум и максимум, и если реальное значение выходит за рамки, то возвращать пользователю допустимые минимум или максимум.

Эту подмену мы можем делать в трех местах. На стадии вставки данных в таблицу, на стадии хранения (по заданию), на стадии запроса.
Если на стадии вставки, то это триггер, и в нем опять же будет динамика.
Если на стадии хранения, то вообще ничего сложного, лопать себе да лопать, начиная с последнего места. Единственный минус - задержки в обработке данных.
Если на стадии выдачи данных пользователю - самое интересное. И самое вкусное, поскольку исходные данные остаются нетронутыми на тот случай, когда их надо будет посмотреть.

Я помню, мне многие советовали не хранить данные горизонтально, но мне до сих пор кажется дикостью хранить такое количество данных вертикально.

ЗЫ За пол-года базешка уже за 5 гигов перевалила, и это только тренировка.
сделай дополнительную табличку, в ней храни имя таблички с данными ( l_val32, например) и там же храни мин и макс по нужным полям, не?
потом джойни только нужные таблички
...
дед-пердед
Изменено: 15.03.2023, 19:57 - Гарыныч
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326235
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Просто Трёп  15.03.2023, 19:43
[игнорируется]
Sparrow  15.03.2023, 19:33
[игнорируется]
что там хранится и зачем?
Показания датчиков, снятые с устройства одномоментно. То есть, одно снятие показаний - одна метка времени и 60 значений. Снятие может быть раз в две секунды. При выборке нужно только время. Отбора по показаниям нет.
Поминутки?
Тогда , да надо 2 базы. Одна сырые данные значений и редких запросов , но долгих.
А другая, для типичных 90% запросов, там на процеесе загрузки или ночью, все нормализовать. Собрать суммы.
Если критичен ОЛАП, кубы , Надо думать. Так и не скажу сразу.
...
Изменено: 15.03.2023, 19:58 - Sparrow
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326247
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гарыныч  15.03.2023, 19:56
[игнорируется]
Просто Трёп  10.03.2023, 12:03
[игнорируется]
Есть несколько таблиц, в которых хранится много однотипных значений. Типа такой
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
CREATE TABLE [dbo].[l_val32](
  [adt] [datetime] NOT NULL,
  [cdt] [datetime] NOT NULL,
  [g_id] [smallint] NOT NULL,
  [v1] [smallmoney] NULL,
  [v2] [smallmoney] NULL,
  [v3] [smallmoney] NULL,
  [v4] [smallmoney] NULL,
  [v5] [smallmoney] NULL,
  [v6] [smallmoney] NULL,
  [v7] [smallmoney] NULL,
  [v8] [smallmoney] NULL,
  [v9] [smallmoney] NULL,
  [v10] [smallmoney] NULL,
  [v11] [smallmoney] NULL,
  [v12] [smallmoney] NULL,
  [v13] [smallmoney] NULL,
  [v14] [smallmoney] NULL,
  [v15] [smallmoney] NULL,
  [v16] [smallmoney] NULL,
  [v17] [smallmoney] NULL,
  [v18] [smallmoney] NULL,
  [v19] [smallmoney] NULL,
  [v20] [smallmoney] NULL,
  [v21] [smallmoney] NULL,
  [v22] [smallmoney] NULL,
  [v23] [smallmoney] NULL,
  [v24] [smallmoney] NULL,
  [v25] [smallmoney] NULL,
  [v26] [smallmoney] NULL,
  [v27] [smallmoney] NULL,
  [v28] [smallmoney] NULL,
  [v29] [smallmoney] NULL,
  [v30] [smallmoney] NULL,
  [v31] [smallmoney] NULL,
  [v32] [smallmoney] NULL
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[l_val32] ADD  CONSTRAINT [DF_l_val32_cdt]  DEFAULT (getdate()) FOR [cdt]
GO

ALTER TABLE [dbo].[l_val32]  WITH CHECK ADD  CONSTRAINT [FK_l_val32_r_groups] FOREIGN KEY([g_id])
REFERENCES [dbo].[r_groups] ([gid])
GO

ALTER TABLE [dbo].[l_val32] CHECK CONSTRAINT [FK_l_val32_r_groups]
GO
Столбцов может быть и больше. Выборки из этих таблиц делаются с помощью динамического SQL. Долго думал, как отказаться от динамики, но так ничего и не придумал. Формируются эти динамки в тот момент, когда пользователь решает, какие столбцы ему будут нужны для дальнейшей работы. Динамка может состоять из нескольких запросов, объединенных юнионами, если пользователю нужны данные из нескольких таких таблиц, например, l_val32 и l_val64. После того, как пользователь сформировал свой запрос, он его юзает, накладывая условия по времени.

Возникла хотелка подменять отдельные значения по минимуму / максимуму. То есть, для определенного столбца (не для всех) определить минимум и максимум, и если реальное значение выходит за рамки, то возвращать пользователю допустимые минимум или максимум.

Эту подмену мы можем делать в трех местах. На стадии вставки данных в таблицу, на стадии хранения (по заданию), на стадии запроса.
Если на стадии вставки, то это триггер, и в нем опять же будет динамика.
Если на стадии хранения, то вообще ничего сложного, лопать себе да лопать, начиная с последнего места. Единственный минус - задержки в обработке данных.
Если на стадии выдачи данных пользователю - самое интересное. И самое вкусное, поскольку исходные данные остаются нетронутыми на тот случай, когда их надо будет посмотреть.

Я помню, мне многие советовали не хранить данные горизонтально, но мне до сих пор кажется дикостью хранить такое количество данных вертикально.

ЗЫ За пол-года базешка уже за 5 гигов перевалила, и это только тренировка.
сделай дополнительную табличку, в ней храни имя таблички с данными ( l_val32, например) и там же храни мин и макс по нужным полям, не?
потом джойни только нужные таблички
Вау. Интересно. Подумаю.
...
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326255
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Просто Трёп  15.03.2023, 20:18
[игнорируется]
Вау. Интересно. Подумаю.
я в акцесе так делал....( например хранил таблички по годам ( архивным ) ....)
когда кому-то из бухгалтеров надо было поднять данные за предудущие года...., тогда джойнил те, что нужны
...
дед-пердед
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326256
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Просто Трёп  15.03.2023, 20:18
[игнорируется]
Гарыныч  15.03.2023, 19:56
[игнорируется]
Просто Трёп  10.03.2023, 12:03
[игнорируется]
Есть несколько таблиц, в которых хранится много однотипных значений. Типа такой
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
CREATE TABLE [dbo].[l_val32](
  [adt] [datetime] NOT NULL,
  [cdt] [datetime] NOT NULL,
  [g_id] [smallint] NOT NULL,
  [v1] [smallmoney] NULL,
  [v2] [smallmoney] NULL,
  [v3] [smallmoney] NULL,
  [v4] [smallmoney] NULL,
  [v5] [smallmoney] NULL,
  [v6] [smallmoney] NULL,
  [v7] [smallmoney] NULL,
  [v8] [smallmoney] NULL,
  [v9] [smallmoney] NULL,
  [v10] [smallmoney] NULL,
  [v11] [smallmoney] NULL,
  [v12] [smallmoney] NULL,
  [v13] [smallmoney] NULL,
  [v14] [smallmoney] NULL,
  [v15] [smallmoney] NULL,
  [v16] [smallmoney] NULL,
  [v17] [smallmoney] NULL,
  [v18] [smallmoney] NULL,
  [v19] [smallmoney] NULL,
  [v20] [smallmoney] NULL,
  [v21] [smallmoney] NULL,
  [v22] [smallmoney] NULL,
  [v23] [smallmoney] NULL,
  [v24] [smallmoney] NULL,
  [v25] [smallmoney] NULL,
  [v26] [smallmoney] NULL,
  [v27] [smallmoney] NULL,
  [v28] [smallmoney] NULL,
  [v29] [smallmoney] NULL,
  [v30] [smallmoney] NULL,
  [v31] [smallmoney] NULL,
  [v32] [smallmoney] NULL
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[l_val32] ADD  CONSTRAINT [DF_l_val32_cdt]  DEFAULT (getdate()) FOR [cdt]
GO

ALTER TABLE [dbo].[l_val32]  WITH CHECK ADD  CONSTRAINT [FK_l_val32_r_groups] FOREIGN KEY([g_id])
REFERENCES [dbo].[r_groups] ([gid])
GO

ALTER TABLE [dbo].[l_val32] CHECK CONSTRAINT [FK_l_val32_r_groups]
GO
Столбцов может быть и больше. Выборки из этих таблиц делаются с помощью динамического SQL. Долго думал, как отказаться от динамики, но так ничего и не придумал. Формируются эти динамки в тот момент, когда пользователь решает, какие столбцы ему будут нужны для дальнейшей работы. Динамка может состоять из нескольких запросов, объединенных юнионами, если пользователю нужны данные из нескольких таких таблиц, например, l_val32 и l_val64. После того, как пользователь сформировал свой запрос, он его юзает, накладывая условия по времени.

Возникла хотелка подменять отдельные значения по минимуму / максимуму. То есть, для определенного столбца (не для всех) определить минимум и максимум, и если реальное значение выходит за рамки, то возвращать пользователю допустимые минимум или максимум.

Эту подмену мы можем делать в трех местах. На стадии вставки данных в таблицу, на стадии хранения (по заданию), на стадии запроса.
Если на стадии вставки, то это триггер, и в нем опять же будет динамика.
Если на стадии хранения, то вообще ничего сложного, лопать себе да лопать, начиная с последнего места. Единственный минус - задержки в обработке данных.
Если на стадии выдачи данных пользователю - самое интересное. И самое вкусное, поскольку исходные данные остаются нетронутыми на тот случай, когда их надо будет посмотреть.

Я помню, мне многие советовали не хранить данные горизонтально, но мне до сих пор кажется дикостью хранить такое количество данных вертикально.

ЗЫ За пол-года базешка уже за 5 гигов перевалила, и это только тренировка.
сделай дополнительную табличку, в ней храни имя таблички с данными ( l_val32, например) и там же храни мин и макс по нужным полям, не?
потом джойни только нужные таблички
Вау. Интересно. Подумаю.
Это опять динамик sql, так не чесно.
...
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326257
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Sparrow  15.03.2023, 20:26
[игнорируется]
Просто Трёп  15.03.2023, 20:18
[игнорируется]
Гарыныч  15.03.2023, 19:56
[игнорируется]
Просто Трёп  10.03.2023, 12:03
[игнорируется]
Есть несколько таблиц, в которых хранится много однотипных значений. Типа такой
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
CREATE TABLE [dbo].[l_val32](
  [adt] [datetime] NOT NULL,
  [cdt] [datetime] NOT NULL,
  [g_id] [smallint] NOT NULL,
  [v1] [smallmoney] NULL,
  [v2] [smallmoney] NULL,
  [v3] [smallmoney] NULL,
  [v4] [smallmoney] NULL,
  [v5] [smallmoney] NULL,
  [v6] [smallmoney] NULL,
  [v7] [smallmoney] NULL,
  [v8] [smallmoney] NULL,
  [v9] [smallmoney] NULL,
  [v10] [smallmoney] NULL,
  [v11] [smallmoney] NULL,
  [v12] [smallmoney] NULL,
  [v13] [smallmoney] NULL,
  [v14] [smallmoney] NULL,
  [v15] [smallmoney] NULL,
  [v16] [smallmoney] NULL,
  [v17] [smallmoney] NULL,
  [v18] [smallmoney] NULL,
  [v19] [smallmoney] NULL,
  [v20] [smallmoney] NULL,
  [v21] [smallmoney] NULL,
  [v22] [smallmoney] NULL,
  [v23] [smallmoney] NULL,
  [v24] [smallmoney] NULL,
  [v25] [smallmoney] NULL,
  [v26] [smallmoney] NULL,
  [v27] [smallmoney] NULL,
  [v28] [smallmoney] NULL,
  [v29] [smallmoney] NULL,
  [v30] [smallmoney] NULL,
  [v31] [smallmoney] NULL,
  [v32] [smallmoney] NULL
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[l_val32] ADD  CONSTRAINT [DF_l_val32_cdt]  DEFAULT (getdate()) FOR [cdt]
GO

ALTER TABLE [dbo].[l_val32]  WITH CHECK ADD  CONSTRAINT [FK_l_val32_r_groups] FOREIGN KEY([g_id])
REFERENCES [dbo].[r_groups] ([gid])
GO

ALTER TABLE [dbo].[l_val32] CHECK CONSTRAINT [FK_l_val32_r_groups]
GO
Столбцов может быть и больше. Выборки из этих таблиц делаются с помощью динамического SQL. Долго думал, как отказаться от динамики, но так ничего и не придумал. Формируются эти динамки в тот момент, когда пользователь решает, какие столбцы ему будут нужны для дальнейшей работы. Динамка может состоять из нескольких запросов, объединенных юнионами, если пользователю нужны данные из нескольких таких таблиц, например, l_val32 и l_val64. После того, как пользователь сформировал свой запрос, он его юзает, накладывая условия по времени.

Возникла хотелка подменять отдельные значения по минимуму / максимуму. То есть, для определенного столбца (не для всех) определить минимум и максимум, и если реальное значение выходит за рамки, то возвращать пользователю допустимые минимум или максимум.

Эту подмену мы можем делать в трех местах. На стадии вставки данных в таблицу, на стадии хранения (по заданию), на стадии запроса.
Если на стадии вставки, то это триггер, и в нем опять же будет динамика.
Если на стадии хранения, то вообще ничего сложного, лопать себе да лопать, начиная с последнего места. Единственный минус - задержки в обработке данных.
Если на стадии выдачи данных пользователю - самое интересное. И самое вкусное, поскольку исходные данные остаются нетронутыми на тот случай, когда их надо будет посмотреть.

Я помню, мне многие советовали не хранить данные горизонтально, но мне до сих пор кажется дикостью хранить такое количество данных вертикально.

ЗЫ За пол-года базешка уже за 5 гигов перевалила, и это только тренировка.
сделай дополнительную табличку, в ней храни имя таблички с данными ( l_val32, например) и там же храни мин и макс по нужным полям, не?
потом джойни только нужные таблички
Вау. Интересно. Подумаю.
Это опять динамик sql, так не чесно.
а джойнить пару табличек или 2 сотни - честно? :)))
...
дед-пердед
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326258
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Гарыныч  15.03.2023, 20:27
[игнорируется]
Sparrow  15.03.2023, 20:26
[игнорируется]
Просто Трёп  15.03.2023, 20:18
[игнорируется]
Гарыныч  15.03.2023, 19:56
[игнорируется]
Просто Трёп  10.03.2023, 12:03
[игнорируется]
...
сделай дополнительную табличку, в ней храни имя таблички с данными ( l_val32, например) и там же храни мин и макс по нужным полям, не?
потом джойни только нужные таблички
Вау. Интересно. Подумаю.
Это опять динамик sql, так не чесно.
а джойнить пару табличек или 2 сотни - честно? :)))
Да
...
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326260
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Гарыныч  15.03.2023, 20:27
[игнорируется]
Sparrow  15.03.2023, 20:26
[игнорируется]
Просто Трёп  15.03.2023, 20:18
[игнорируется]
Гарыныч  15.03.2023, 19:56
[игнорируется]
Просто Трёп  10.03.2023, 12:03
[игнорируется]
...
сделай дополнительную табличку, в ней храни имя таблички с данными ( l_val32, например) и там же храни мин и макс по нужным полям, не?
потом джойни только нужные таблички
Вау. Интересно. Подумаю.
Это опять динамик sql, так не чесно.
а джойнить пару табличек или 2 сотни - честно? :)))
Есть язоковые фитчи чтобы это делать без динамик sql, если это в пределах нормальных форм.
...
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326261
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Sparrow  15.03.2023, 20:35
[игнорируется]
Гарыныч  15.03.2023, 20:27
[игнорируется]
Sparrow  15.03.2023, 20:26
[игнорируется]
Просто Трёп  15.03.2023, 20:18
[игнорируется]
Гарыныч  15.03.2023, 19:56
[игнорируется]
...
Вау. Интересно. Подумаю.
Это опять динамик sql, так не чесно.
а джойнить пару табличек или 2 сотни - честно? :)))
Есть язоковые фитчи чтобы это делать без динамик sql, если это в пределах нормальных форм.
я них не понил, можешь пояснить?
...
дед-пердед
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326267
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Гарыныч  15.03.2023, 20:36
[игнорируется]
Sparrow  15.03.2023, 20:35
[игнорируется]
Гарыныч  15.03.2023, 20:27
[игнорируется]
Sparrow  15.03.2023, 20:26
[игнорируется]
Просто Трёп  15.03.2023, 20:18
[игнорируется]
...
Это опять динамик sql, так не чесно.
а джойнить пару табличек или 2 сотни - честно? :)))
Есть язоковые фитчи чтобы это делать без динамик sql, если это в пределах нормальных форм.
я них не понил, можешь пояснить?
Конкретно не могу, лень читать руководства, но с каждой версией микрософт придумывает новые удобства типа развития оконных функций. Или еще чего сего, чтобы отучить нас от динамик sql.
Sql запрос они могут оптимизировать, там пишешь , что хочешь, а не так как нужно , с тчки зрения Тебя. Меня.
...
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326270
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Sparrow  15.03.2023, 20:44
[игнорируется]
Гарыныч  15.03.2023, 20:36
[игнорируется]
Sparrow  15.03.2023, 20:35
[игнорируется]
Гарыныч  15.03.2023, 20:27
[игнорируется]
Sparrow  15.03.2023, 20:26
[игнорируется]
...
а джойнить пару табличек или 2 сотни - честно? :)))
Есть язоковые фитчи чтобы это делать без динамик sql, если это в пределах нормальных форм.
я них не понил, можешь пояснить?
Конкретно не могу, лень читать руководства, но с каждой версией микрософт придумывает новые удобства типа развития оконных функций. Или еще чего сего, чтобы отучить нас от динамик sql.
Sql запрос они могут оптимизировать, там пишешь , что хочешь, а не так как нужно , с тчки зрения Тебя. Меня.
так понятней стало :)))
...
дед-пердед
Изменено: 15.03.2023, 20:48 - Гарыныч
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326271
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
воробышку:
Просто Трёп  15.03.2023, 19:43
[игнорируется]
То есть, одно снятие показаний - одна метка времени и 60 значений. Снятие может быть раз в две секунды. При выборке нужно только время. Отбора по показаниям нет.
...
дед-пердед
Изменено: 15.03.2023, 20:49 - Гарыныч
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326272
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Гарыныч [игнорируется] 

Будем считать что я демагог , увы (((:
...
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326275
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
не, ты не демагог....
просто вычислительные ресурсы у всех разные.... :(((
...
дед-пердед
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326279
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Гарыныч  15.03.2023, 20:49
[игнорируется]
воробышку:
Просто Трёп  15.03.2023, 19:43
[игнорируется]
То есть, одно снятие показаний - одна метка времени и 60 значений. Снятие может быть раз в две секунды. При выборке нужно только время. Отбора по показаниям нет.
Там не все так однозначно и совсем абстрактно, автору или лень разбираться или ему не обьяснили что хотят. Я бы никогда не назвал столбцы

V1, v2, v3, v4 ....
Тем более если несклько таблиц.
Они все чегото обозначают. И имеют какието связи.

Может там все секретно. Мне не понятно.
...
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326284
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Это по любому много датчиков, они имеют свои иды, свойства.
И не возможно с них снять все значения одновременно.
Модель мягко говоря сильно абстрактна или упрощена.
...
Изменено: 15.03.2023, 21:09 - Sparrow
Рейтинг: 0 / 0
Нужно нестандартное решение
    #326289
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Sparrow  15.03.2023, 21:07
[игнорируется]
Это по любому много датчиков, они имеют свои иды, свойства.
И не возможно с них снять все значения одновременно.
Модель мягко говоря сильно абстрактна или упрощена.
хз...., я так понил задачу, если не угадал, сорри... :)
...
дед-пердед
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft SQL Server [закрыт для гостей] / Нужно нестандартное решение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Игнорируют тему (1): erbol 
Читали форум (1): Анонимы (1)
Пользователи онлайн (43): Анонимы (27), IT-Клоп, prostozevs, пк, NSFuimus, Буся, Bing Bot, Green, Yandex Bot 1 мин., Просто Трёп 1 мин., anonymous 1 мин., Google Bot 2 мин., XEugene 3 мин., Ветер 5 мин., Гарыныч 7 мин., Шоколадный01 9 мин., erbol 9 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]