| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Коллега обнаружил очень занятную особенность ядра AX 2009: помните, раньше был такой параметр командной строки -internal=crosscompany, после добавления которого можно было играться позицией поля dataareaid в индексе? Так вот, в AX 2009 этот режим включен по умолчанию, так что можно в любой момент у любого индекса таблицы, чьи данные хранятся в разрезе компаний, указать, каким именно полем по счету должно быть в этом индексе поле dataareaid. Это очень удобно с учетом того, что в AX 2009 появилась возможность делать запросы сразу по нескольким компаниям и в куче мест стандартного функционала она активно используется. Зачастую генерятся запросы, которым dataareaid на первом месте в индексах ну совсем ни к чему, и такие индексы теперь очень просто стало подправлять: достаточно явно добавить в индекс поле dataareaid и переместить его на нужное место в списке индексируемых полей.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: mazzy (2), AlGol (2), Logger (3), lev (5), jonny (3). | |
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Всем добрый день. В AX4 есть возможность добавлять в индекс поле DataAreaId и ставить его в любой позиции, хоть в конец. Что собственно дает небольшой прирост производительности по некоторым полям. 
		
		
		
		
		
		
			Есть ли возможность средствами AX вообще сделать индекс без DataAreaId, оставив свойство SaveDataPerCompany без изменений. Например реализовать такую рекомендацию от DBAшников: X++: CREATE NONCLUSTERED INDEX [IX_INVENTTABLE_ITEMID_ITEMNAME]
ON [dbo].[INVENTTABLE] ([ITEMID],[ITEMNAME])
WITH (ONLINE = ON, SORT_IN_TEMPDB = ON )
ON [Indexes]
GO
				__________________ 
		
		
		
		
	// no comments  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Штатно, насколько я знаю, если поле DataAreaId физически создается Аксаптой в таблице, то оно явно или неявно будет и в каждом индексе, создаваемом в AOT. В этих условиях индекс без DataAreaId можно создать руками в БД, но чтобы при синхронизации Аксапта его не прибила, нужно предпринять дополнительные усилия.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: dech (1). | |
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Есть ли возможность средствами AX вообще сделать индекс без DataAreaId, оставив свойство SaveDataPerCompany без изменений
		
	 
Если dataareaId мешает в начале, можно его последним полем поставить.  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Скажите своим DBA чтоб меньше с DTA баловались, он им такого насоветует..
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	-ТСЯ или -ТЬСЯ ?  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Поскольку У нас в AX более одной компании, а InventTable и InventSum являются таблицами серьезными, я решил послать админов куда подальше. На худой конец в индексе добавим поле в конец списка, как я и планировал.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	// no comments  | 
| 
	
 | 
| Теги | 
| ax2009, crosscompany, индекс | 
| 
	
	 | 
	
		
  |