Прогнал тот же тест на sqlite odbc
rc = СоздатьОбъект("ODBCRecordSet");
sql = СоздатьОбъект("ODBCDatabase");
Имя0 = "sqlite_1c";
//Имя_sql_bd = ":memory:";
Стр_Открыть = "DSN=sqlite_1c;Driver=SQLite3 ODBC Driver;Database=" + Имя_sql_bd + ";" ;
Фл1 = sql.Соединение(Стр_Открыть);
Если Фл1 = 0 Тогда
Сообщить("Не смогли открыть DSN = " + Имя0);
Сообщить("Ошибка = " + sql.ПолучитьОписаниеОшибки() );
return;
КонецЕсли;
rc.УстБД(sql);
Стр_0 = "CREATE TEMP TABLE IF NOT EXISTS TmpTable(ID CHAR ,Descr CHAR)";
rc.ВыполнитьИнструкцию(Стр_0);
КоличествоЭлементов=10000;
ВремяНачалоЗапроса=_GetPerformanceCounter();
ТекстЗапроса="INSERT INTO TmpTable (ID,Descr ) VALUES (?,?)";
rc.ДобПараметр(1,14,9,0,);
rc.ДобПараметр(1,14,70,0,);
rc.Подготовить(ТекстЗапроса);
Для ИИ=1 По КоличествоЭлементов Цикл //
ID=" 12G ";
Descr="15-034 MOTOR SUB ";
rc.УстПараметр(1, ID);
rc.УстПараметр(2, Descr);
rc.Выполнить();
КонеЦЦикла;
ВремяКонецЗапроса=_GetPerformanceCounter();
ВремяЗапроса=ВремяКонецЗапроса-ВремяНачалоЗапроса;
Сообщить("Запрос вставки "+(ВремяЗапроса/1000)+"с");
// 2. Тест выборки
ВремяНачалоЗапроса=_GetPerformanceCounter();
ТЗ = rc.ВыполнитьИнструкцию("SELECT WW.ID,WW.Descr from TmpTable as WW ");
ВремяКонецЗапроса=_GetPerformanceCounter();
ВремяЗапроса=ВремяКонецЗапроса-ВремяНачалоЗапроса;
Сообщить("Запрос выборки длился "+(ВремяЗапроса/1000)+"с");
//Просмотр ТЗ
Сообщить("Кол строк "+ТЗ.КоличествоСтрок());
ТЗ.ВыбратьСтроку();
rc.Закрыть();
sql.Закрыть();
Результаты :
Запрос вставки 195.541с
Запрос выборки длился 0.211с
Кол строк 50000
Запрос вставки 39.102с
Запрос выборки длился 0.038с
Кол строк 10000
убрал параметризацию при вставке
(все через Выполнитьскалярный() )
без параметра Запрос вставки 10.501с
Запрос выборки длился 0.208с
Кол строк 50000
без параметра Запрос вставки 1.932с
Запрос выборки длился 0.036с
Кол строк 10000