Начало » Дискуcсии » Проектирование БД » Группировка товаров в MS SQL (Как оптимальнее сделать группировку справочника товаров) 
	
		
		
			| Группировка товаров в MS SQL [сообщение #2311] | 
			Sun, 21 May 2023 20:44   | 
		 
		
			
				
				
				
					
						  
						GrigoryFomin
						 Сообщений: 91 Зарегистрирован: April 2023 
						
					 | 
					Member  | 
					 | 
		 
		 
	 | 
 
	
		MS SQL. Есть справочник товаров - 2 млн позиций. Каждый товар имеет группировку: тип, подтип, подподтип (например, Одежда мужская->коллекция 2023->Рубашки). Сейчас это хранится все в трех полях справочника товаров. С товарами надо быстро работать по группировке - нужно выбрать быстро все товары по заданной группировке - например, оператор выбирает "тип" - нужно в грид загрузить все товары одного типа (допустим 100 тыс. записей), потом из них может выбрать подтип - в грид должны попасть уже 5 тыс. товаров. В завершении он может выбрать подподтип - в гриде должно остаться допустим 100 товаров. Именно в такой последовательности, так как он может выбрать только тип и работать в гриде встроенными фильтрационными средствами (там есть колонки, цена, скидка, размер, цвет и куча других). Затем по этим типам/подтипам надо формировать итоговые отчеты - сколько продано товаров такого-то "типа", из них - столько-то такого-то "подтипа" и т.п.  
По классике - нужно группировку хранить в виде дерева со связями ID-ParentID, но это вызывает тормоза при выборке - нужно рекурсивно получать каждый раз всех потомков, а потом еще и выборку самих товаров на его основе делать - долго каждый раз. Есть более изящное решение? HierarhyID вроде современннее, но его не поддерживают компоненты Delphi. Нужно вручную грузить ветки. 
		
		
		
 |  
	| 
		
	 | 
 
 
 |  
	| 
		
 |  
	| 
		
 |  
	| 
		
 |   
Переход к форуму:
 
 Текущее время: Tue Nov 04 10:46:38 GMT+3 2025 
 Общее время, затраченное на создание страницы: 0.01021 секунд 
 |