powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
25 сообщений из 26, страница 1 из 2
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38420756
bickaze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день
Подскажите как правильнее сделать структуру таблицы c 1 млн строк

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

Пока решил дату разделить и создать отдельные поля "неделя", "квартал" и по ним делать группировки и суммировать их.
Делаю это ради того чтобы уменьшить нагрузки. Правильно ли?

Никогда с подобным количеством строк не работал. Что еще стоит учесть?
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38420758
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего будет достаточно одного поля типа DATE или DATETIME.
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38420765
bickaze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftСкорее всего будет достаточно одного поля типа DATE или DATETIME.
из-за того что 1 млн строк это небольшие нагрузки или мой способ не даст прибавки в скорости?
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38420768
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bickazemiksoftСкорее всего будет достаточно одного поля типа DATE или DATETIME.
из-за того что 1 млн строк это небольшие нагрузки или мой способ не даст прибавки в скорости?И то, и другое. Да и конкретных таблиц/запросов/статистики вы не показали, так что пока трудно предложить какое-то частное решение.

Возможно, имеет смысл рассмотреть вариант не группировки на лету, а хранения сгруппированных предрассчитанных данных в отдельной табличке. Но, опять же, зависит от фактических данных и точной постановки задачи.
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38420819
bickaze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотел наоборот упростить задачу. Напишу как есть. Структура данных и запросы еще не определены.

Есть товар, который каждую неделю добавляется на складе. Нужно делать выгрузку данных суммируя данные по неделям\кварталу\периоду за определенные период времени

Думал структуру делать такой:

unic_id, product_id(int), date(date), num (int), sort_id1, sort_id2,



а запросы будут такие (при выгрузке по месяцам)
Код: sql
1.
2.
3.
4.
5.
6.
SELECT *, MONTH(`date`) as M, SUM(`num`) as S FROM `table` WHERE  
product_id = '1' AND 
sort_id1='100'  AND
date > '2010-01-01' AND
date < '2013-01-01'
GROUP BY M



в конечном итоге я должен получить что то вроде этого http://clip2net.com/s/5UHAgh
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38420830
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поле num какое имеет смысловое значение? приход/расход?
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38420832
bickaze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftПоле num какое имеет смысловое значение? приход/расход?
фактическое количество

это статистика количества экспорта товаров
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38420833
bickaze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тип числовой с 2м цифрами после точки
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38420842
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bickazemiksoftПоле num какое имеет смысловое значение? приход/расход?
фактическое количествоТогда задача опять рассыпается. Если на складе позавчера, вчера и сегодня лежало две детали, то какой смысл их суммировать и получать шесть?
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38420850
bickaze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftbickazeпропущено...

фактическое количествоТогда задача опять рассыпается. Если на складе позавчера, вчера и сегодня лежало две детали, то какой смысл их суммировать и получать шесть?
это не склад, это мое неверное упрощение


это количество товара проданное в эту дату, и надо показать сумму продаж

то есть
01.01.2011 продано 100 штук
02.01.2011 продано 120 штук
01.10.2011 продано 130 штук

надо суммировать сколько продано в 01.2011 и сколько в 02.2011
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38421046
bickaze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
немного поправлю мой рабочий запрос (добавил order by)
Код: sql
1.
2.
SELECT *, COUNT(id), DAY(`date`) as M, SUM(`num`) as S FROM `table`  
GROUP BY M ORDER BY product_id, date
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38421047
bickaze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
убрал тестовый count()
Код: sql
1.
2.
SELECT *, DAY(`date`) as M, SUM(`data`) as S FROM `statistic`  
GROUP BY M ORDER BY product_id, date



offtop: как редактировать старые сообщения?
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38421056
bickaze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще планировал использовать in

Конечный запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT *, MONTH(`date`) as M, SUM(`num`) as S FROM `table` WHERE  
product_id IN (1,2,3,4,5,1000) AND 
sort_id1='100'  AND
date > '2010-01-01' AND
date < '2013-01-01'
GROUP BY M
ORDER BY product_id, date
 
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38422033
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как правильнее сделать структуру таблицы c 1 млн строк

Ровно точно так же, как и таблицу с одной строкой.

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

Группировка производится при выборке данных, а не при хранении.

Пока решил дату разделить и создать отдельные поля "неделя", "квартал" и по ним делать группировки и суммировать их.
Делаю это ради того чтобы уменьшить нагрузки. Правильно ли?

Достаточно просто даты.

Никогда с подобным количеством строк не работал. Что еще стоит учесть?

Создавать индексы и использовать хорошие SARG-и.
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38422034
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bickazeнемного поправлю мой рабочий запрос (добавил order by)
Код: sql
1.
2.
SELECT *, COUNT(id), DAY(`date`) as M, SUM(`num`) as S FROM `table`  
GROUP BY M ORDER BY product_id, date



шизонутый запрос...
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38422037
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unic_id, product_id(int), date(date), num (int), sort_id1, sort_id2,


Что такое sort_id1, sort_id2, ?
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38422476
bickaze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE TABLE IF NOT EXISTS `statistic` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `date` date NOT NULL,
  `num` float(11,2) NOT NULL,
  `product_id` int(11) unsigned NOT NULL,
  `sort1` int(11) unsigned NOT NULL,
  `sort2` int(11) unsigned NOT NULL,
  `sort3` int(11) unsigned NOT NULL,
  `sort4` int(11) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `sort1` (`sort1`,`sort2`,`sort3`,`sort4`),
  KEY `product_id` (`product_id`),
  KEY `date` (`date`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1000045 ;



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
INSERT INTO `statistic` (`id`, `date`, `num`, `product_id`, `sort1`, `sort2`, `sort3`, `sort4`) VALUES
(1, '2011-03-06', 346.00, 8, 7, 5, 9, 3),
(2, '2011-10-15', 807.00, 6, 2, 3, 7, 3),
(3, '2011-06-01', 453.00, 13, 6, 5, 5, 9),
(4, '2011-09-17', 804.00, 9, 3, 6, 1, 1),
(5, '2011-04-26', 223.00, 6, 6, 8, 2, 1),
(6, '2011-06-12', 167.00, 15, 9, 8, 1, 3),
(7, '2011-04-14', 436.00, 14, 1, 3, 5, 4),
(8, '2011-01-31', 425.00, 9, 1, 3, 2, 5),
(9, '2011-07-24', 374.00, 18, 5, 1, 6, 5),
(10, '2011-09-19', 158.00, 13, 1, 6, 1, 5),
(11, '2011-11-17', 308.00, 11, 1, 1, 6, 8),
(12, '2011-04-01', 630.00, 3, 3, 2, 6, 2),
(13, '2011-08-07', 752.00, 14, 2, 9, 7, 9),
(14, '2011-04-03', 273.00, 15, 9, 9, 5, 5),
(15, '2011-06-23', 7.00, 8, 2, 5, 2, 4),
(16, '2011-08-12', 241.00, 14, 7, 4, 7, 3),
(17, '2011-08-21', 978.00, 13, 4, 2, 7, 6),
(18, '2011-05-10', 192.00, 15, 7, 6, 5, 7),
(19, '2011-11-10', 73.00, 20, 8, 6, 5, 9),
(20, '2011-03-30', 281.00, 4, 7, 1, 9, 7);



сам запрос

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT *,  MONTH(`date`) as M, SUM(`num`) as S FROM `statistic` WHERE  
            product_id IN ( 1,2,15) AND 
            WHERE `sort1` == 6 AND
            date > '2010-01-01' AND
            date < '2013-11-01' 
            
            GROUP BY  sort1, sort2, sort3, sort4, M
            
    ORDER BY product_id, sort1, sort2, sort3, sort4, M




sort1-4 это поля по которым надо будет группировать и сортировать данные
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38422511
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bickaze, шизонутый запрос (c)
Вы лучше скажите словами , что хотите получить.
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38422563
bickaze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirbickaze, шизонутый запрос (c)
Вы лучше скажите словами , что хотите получить.

Есть такая таблица (в аттаче).
Мне нужно ее добавить в БД и показывать сколько "Лома" продавали каждый месяц, квартал, год.
При этом группируя как в таблице по Странам(Откуда и куда)
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38422577
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bickaze, может, вы ещё хотите сказать, что это
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT *,  MONTH(`date`) as M, SUM(`num`) as S FROM `statistic` WHERE
            product_id IN ( 1,2,15) AND 
            WHERE `sort1` == 6 AND
            date > '2010-01-01' AND
            date < '2013-11-01' 
            
            GROUP BY  sort1, sort2, sort3, sort4, M
            
    ORDER BY product_id, sort1, sort2, sort3, sort4, M

работает??

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT MONTH(`date`) as M
 ,product_id
 ,sort1, sort2, sort3, sort4
 ,SUM(`num`) as S 
FROM `statistic` 
WHERE  
 product_id IN ( 1,2,15) AND 
 `sort1` == 6 AND
 date > '2010-01-01' AND
 date < '2013-11-01' 
ORDER BY product_id, sort1, sort2, sort3, sort4, M

PS. если в sort1 всегда фильтруется единственное значение, то из группировки его надо исключиь вообще...
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38422715
bickaze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir, работает :)
с группировки разумеется уберу этот sort
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38422727
bickaze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В чем шизонутось запроса? Как это исключить?

Убрать все группировки? Создать другую таблицу где хранить их в с группированном варианте с различными значениям sort? или это тоже пушка по мухам?
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38423308
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bickazetanglirbickaze, шизонутый запрос (c)
Вы лучше скажите словами , что хотите получить.

Есть такая таблица (в аттаче).
Мне нужно ее добавить в БД и показывать сколько "Лома" продавали каждый месяц, квартал, год.


Таблица для храненния этого должна быть приметно такая:

category, subcategory, product, from, to, date, amount

Первичный ключ видимо (subcategory, product, from, to, date) или сурогат, а это -- UNIQUE.


"При этом группируя как в таблице по Странам(Откуда и куда) "

Группируют в запросах, а не в таблицах.
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38423356
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bickazeВ чем шизонутось запроса?в том, что выбираете одно, группируете по другому, а сортируете по третьему.
...
Рейтинг: 0 / 0
Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
    #38423686
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirbickazeВ чем шизонутось запроса?в том, что выбираете одно, группируете по другому, а сортируете по третьему.

Да не, строго говоря, он просто синтаксически неверен.
Нормальная СУБД его бы не сожрала. Нормальная в смысле GROUP BY.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Правильная структура таблицы при сортировке по неделям, месяцу и году, 1 млн строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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