Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблема с SQL
|
|||
|---|---|---|---|
|
#18+
Возникла необходимость в программе которая могла бы выполнять запросы SQL. Вариант их выполнения через ODBC, как оказалось неподходит, из за его несовершенства. Одни и те же запросы выполнялись в Cache SQL Managere и сообщали загадочное сообщение General SQL Error, при выполнении его через любой вариант обращения к ОДБС драйверу на любой версии Каше вплоть до 2007. В оправдание драйвера следует заметить что классы были достаточно оригинальны и что на простых классах все рабоало вполне нормально, однако все шло к тому чтобы использовать интерфейс ActiveX. Ниже приведенный пример должен выполнять произвольный запрос и загружать данные во временную таблицу, скорость загрузки в эту таблицу незначительна, но скорость выполнения конструкции : while(Result.OleFunction("next")) for (int n = 1;n < ColCount ;n++) Result.OleFunction("GetDataAsString",n); Составляет около 3-х секунд на 1000 записей, 15 000 записей грузятся около 1 минуты, хотя и ОДБС и SQL Manager загружают 15 000 за 1 секунду. Полный текст: Variant Factory = CreateOleObject("CacheObject.Factory"); Variant Connect = Factory.OleFunction("Connect", "cn_iptcp:127.0.0.1[1972]:TEMP"); Variant Result = Factory.OleFunction("DynamicSQL", Memo1->Text.c_str()); int ColCount = Result.OleFunction("GetColumnCount"); Result.OleFunction("SetRunTimeMode",1); while(Result.OleFunction("next")){ RxMemoryData1->Insert(); for (int n = 1;n < ColCount ;n++) try{ RxMemoryData1->Fields->Fields[n-1]->AsString = Result.OleFunction("GetDataAsString",n); } catch(...){;} Подскажите пожалуста что исправить для получения приемлемой скорости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2007, 11:03 |
|
||
|
Проблема с SQL
|
|||
|---|---|---|---|
|
#18+
Сколько времени выполняется Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. На простом запросе без группировок и сортировок ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2007, 12:13 |
|
||
|
Проблема с SQL
|
|||
|---|---|---|---|
|
#18+
String ColName; clock_t start, end; Variant Factory = CreateOleObject("CacheObject.Factory"); Variant Temp; Variant Connect = Factory.OleFunction("Connect", "cn_iptcp:127.0.0.1[1972]:PHARMACY"); Variant Result = Factory.OleFunction("DynamicSQL", Memo1->Text.c_str()); if(!Result.OleFunction("execute")) return ShowMessage("SQL ERROR"); int ColCount = Result.OleFunction("GetColumnCount"); RxMemoryData1->FieldDefs->Clear(); start = clock(); for (int n = 1;n < ColCount ;n++) { ColName = Result.OleFunction("GetColumnName",n); RxMemoryData1->FieldDefs->Add(ColName,ftString,50); } RxMemoryData1->Open(); Result.OleFunction("SetRunTimeMode",1); while(Result.OleFunction("next")){ RxMemoryData1->Insert(); /* for (int n = 1;n < ColCount ;n++) try{ RxMemoryData1->Fields->Fields[n-1]->AsString = Result.OleFunction("GetDataAsString",n); } catch(...){;} */ } end = clock(); Factory = Null,Connect = Null; ShowMessage((end - start) / CLK_TCK); Выполняется 4,6 секунды а если раскоментировать 53,5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2007, 12:44 |
|
||
|
|

start [/forum/topic.php?fid=39&fpage=75&tid=1559064]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 401ms |

| 0 / 0 |
