| 
			
			 | 
		#1 | 
| 
			
			 ---------------- 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Дает ли RecordInsertList какое-нибудь увеличение производительности? 
		
		
		
		
		
		
		
	Откуда вопрос - Смотрю в SQLProfiler и вижу все тот же набор INSERT INTO.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			The array insert operation automatically falls back to classic record-by-record inserts when non-SQL based tables are used (e.g. temporary tables), or the insert() method on the table is overloaded (unless explicitly discarded).
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			По идее это и есть  
		
		
		
		
		
		
			
		
		
		
		
	insert_recordset, только с ним удобно работать. Вставляет все сразу - то есть прирост существенный.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 ---------------- 
		
			
	 | 
	
	
	
		
		
		
		 
			
			to _AnK_ нет не мой. Это точно SQL таблица и точно нет insert. 
		
		
		
		
		
		
		
	Единственное отличие, которое я увидел, при использовании RecordInsertList RecId выделяется бОльшими кусками (47) по сравнению с циклическим doInsert (24). Тем не менее, выигрыш на простейшей таблицы в 2 раза.... непонятно to kashperuk На счет удобства можно поспорить  
		 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			а что вы конкретно подразумеваете под циклическим doInsert если можно?
		 
		
		
		
		
		
		
			
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 ---------------- 
		
			
	 | 
	
	
	
		
		
		
		 PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ну - так разница то есть -  
		
		
		
		
		
		
			
		
		
		
		
	в первом случае идет только одно обращение к БД - когда делается insertDataBase А во втором каждая строка по отдельности вставляется.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 ---------------- 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Иван, о чем я и говорю, что ожидал увидеть 1 обращение к БД (хотя совершенно не представляю как это можно сделать на SQL), а вижу все те же 10000.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Хм. я честно говоря профайлером так никогда эту функцию и не смотрел. Тогда действительно странно. 
		
		
		
		
		
		
			
		
		
		
		
	Но в хелпе по RecordInsertList написано, что вставка идет именно единоразово. Я им верил - до сегодняшнего дня  
		 | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Может быть в первом случае инсерты выполняются асинхронно.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А что вы собственно ожидали увидеть? Что нибудь типа BULK INSERT?
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от kashperuk
			
			 
Но в хелпе по RecordInsertList написано, что вставка идет именно единоразово. Я им верил - до сегодняшнего дня  
		
	![]()   Написано так: Цитата: 
	
		
			 It should, however, be emphasized, that records are inserted whenever the kernel finds the time appropriate, but no later than the call to insertDatabase
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 ---------------- 
		
			
	 | 
	
	
	
		
		
		
		 
			
			AndyD, я ожидал увидеть чудо, но его там не оказалось... как обычно  
		
		
		
		
		
		
		
	![]() Хотя, остался вопрос, если нет существенной разницы в исполнении вставки, то откуда прирост в 2 раза  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Wamr
			
			 
AndyD, я ожидал увидеть чудо, но его там не оказалось... как обычно 
		
	insert into myTable (..) select .. from #tempTable (для сиквела) похоже, снова что-то заоптимизировали ![]() надо будет проверить на 3.0 без сервиспаков 
				__________________ 
		
		
		
		
	-ТСЯ или -ТЬСЯ ?  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Первое что бросилось в глаза - insertDatabase() идет в рамках транзакции. Попробовал стартовать транзакцию перед началом цикла вставки для doInsert() и коммитить после завершения цикла - время вставки уменьшилось в три раза.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			У меня для вышеприведенного примера вообще разница вышла 1 к 15
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 ---------------- 
		
			
	 | 
	
	
	
		
		
		
		 
			
			leshy, какая версия Аксапты и какой sql-сервер?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Axapta 3.0 SP3 
		
		
		
		
		
		
		
	MSSQL 2000 SQL и АОС на одной машине (Ксеон 2х2,4Ггц)  | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Добрый день! 
		
		
		
		
		
		
		
	Хотелось поднять эту тему! Кто-нибудь использует RecordInsertList для массовой вставки строк для повышения производительности в MS DAX 2009? Помогает?  | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Помогает и еще как. 
		
		
		
		
		
		
		
	Cтандартное приложение тоже использует. Cм. например вставку в salesParmTable/salesParmLine  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Just_smile (1). | |
| Теги | 
| recordinsertlist, recordsortedlist | 
| 
	
	 | 
	
		
		
  |