Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Пакетное выполнение команд, сравнение - строк 2 вопроса
|
|||
|---|---|---|---|
|
#18+
To gardenman “я как раз и имел в виду рекурсивные запрос” У меня была смутная догадка на этот счет, я искал по слову «virtual» но ничего не нашел. “Кстати, в том же COOK BOOK есть пример Normalize/Denormalize data. Это как раз вам в тему.” Да, именно так. « И, если мне не изменяет память здесь на форуме был уже пример как строку разложить по словам в таблицу.» Мне ничего найти не удалось. «даже не смотря на то, что SQL позволяет все это сделать решил бы ее на C/C++. Я конечно затрачу времени на это раза в 2-3 больше, но производительность увеличится раз в 100. Причем табличные функции на C/C++ именно в DB2 пишутся просто влет.» А с каким компилятором пишуться программы на C/C++ для DB2 ? А интересно было бы сравнить разницу в скорости ? Есть ли бесплатные компиляторы для этой цели, и примеры того как нужно писать , компилировать и вызывать написанное из DB2 ? «Кстати, объясните пожалуйста зачем cScting и cDelemiters вы делаете FOR BIT DATA.» 1) Скорость работы строковых функций по моему предположению должна быть выше поскольку не зависит от Collattion Setting 2) Сравнение и поиск всегда чувствительны к регистру (вдруг все таки есть базы нечувствительные к регистру) Все это мои предположения, хотя вроде что –то мельком видел в документации. To Виктор «Каким же образом? Строки ведь заблокированы до завершения транзакции. Вот добавить своё (в новой DB2; в старой тоже сядет на блокировку), пожалуй, сможет.» Я предполагал нечто подобно, и хотел получить подтверждение. «пока лень вникать в ваш алгоритм.» Алгоритм надежный как автомат Калашникова, просто в DB2 выглядит некрасиво. « В чём вы видите "не является простым"? В том, что разделители могут быть разными? Так их можно свести к одному (пробелу) при помощи функции TRANSLATE» Читая пример я тоже до этого додумался. Но сводить в общем случае не к пробелу (ведь его может и не быть в строке из символов разделителей), а к одному из (любому) символов из строки разделителей, в частном случае лучше к пробелу. «там была небольшая ошибка, но её легко исправить». На самом деле две ошибки – пример не работал при пустом символе разделителе, и в двух местах нужно было вычесть 1. Ну что ж в итоге получилась функция (будет время сравню по скорости с предыдущим вариантом) , Работает и пустым разделителем, и с единым разделителем состоящим из нескольких разных символов. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. Еще раз спасибо за высказанные мнения и полезные советы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 08:35 |
|
||
|
Пакетное выполнение команд, сравнение - строк 2 вопроса
|
|||
|---|---|---|---|
|
#18+
> А с каким компилятором пишуться программы на C/C++ для DB2 ? > А интересно было бы сравнить разницу в скорости ? Если вы на виндовой платформе это делаете, то можете скачать MinGW (www.mingw.org) - это будет абсолютно бесплатно (gcc ). Или можете воспользоваться MS Visual С++ (любая версия) Ежели вы под Linux хотите - то там всегда gcc есть.Под AIX наверно icc или опять же gcc. Как и под Solaris. Кстати, был такой пример, когда я генерил строку случайных символов таким образом: CHR(INT(RAND()*25+65))||CHR(INT(RAND()*25+65))||CHR(INT(RAND()*25+65))||... А потом реализовал то же самое, но на C++... Разница в производительности была на порядок. Причем естественно зависила от длины строки. Если вам действительно не лень, и действительно хочется добиться крутой производительности, то реализуйте эту функцию на C++. В принципе могу даже помочь))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 11:41 |
|
||
|
Пакетное выполнение команд, сравнение - строк 2 вопроса
|
|||
|---|---|---|---|
|
#18+
To gardenman Спасибо. Если бы я решил переписать свои функции на C, то у меня основное время ушло бы на поиск примеров таких функций для DB2, с какими опциями компилировать, как вызывать из DB2 - поскольку у меня нет такого опыта. Что касается конвертации строки символов в таблицу, то ведь все равно придется задействовать вызов SQL DB2 только уже из функции написанной на C и там, вероятно, разница в скорости не будет столь значительной. Что касается работы со строками, то разница в скорости конечно будет большой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2005, 08:32 |
|
||
|
Пакетное выполнение команд, сравнение - строк 2 вопроса
|
|||
|---|---|---|---|
|
#18+
Интересно, если тоже самое и сделать на Java или .NET языке (Windows only), насколько бы это было бы конкурентноспособным по сравнению с C/C++... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2005, 10:04 |
|
||
|
Пакетное выполнение команд, сравнение - строк 2 вопроса
|
|||
|---|---|---|---|
|
#18+
Игорь - в дистре db2 идет просто куча примеров на все случаИ жизнИ. ACRUS - только вчера общался с разработчиками приложений DB2 (и эти приложения используете и вы - только не знаете), которые пишут на ASM. В отношении SP у них такое же мнение, как и у gardenman и у меня. С поправкой - если надо, то уж лучше на С ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2005, 13:14 |
|
||
|
Пакетное выполнение команд, сравнение - строк 2 вопроса
|
|||
|---|---|---|---|
|
#18+
> Что касается конвертации строки символов в таблицу, то ведь все равно придется задействовать вызов SQL DB2 Основные ресурсы при работе виртуальной машины SQL - это распредение/освобожнение памяти особенно когда работаете с такими типами как VARCHAR/LOB. У DB2 при написании внешних функций есть отличная штука - SCRATCHPAD (поищите тут по форуму). Этим можно очень эффективно пользоваться. Поэтому когда я говорю что производительность можно увеличить на порядок - это правда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2005, 13:57 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=33410283&tid=1605653]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 268ms |
| total: | 413ms |

| 0 / 0 |
