|
|
|
SQL-запросы
|
|||
|---|---|---|---|
|
#18+
такие задачи решаються на уровне sql или strored procedures ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2005, 14:54 |
|
||
|
SQL-запросы
|
|||
|---|---|---|---|
|
#18+
manschтакие задачи решаються на уровне sql или strored procedures Именно это я и хотел сказать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2005, 16:53 |
|
||
|
SQL-запросы
|
|||
|---|---|---|---|
|
#18+
Евгений ПутилинВ случае если тебе нужно будет 10^6 раз выполнить запроc и ты каждый раз будеш препарировать заново то получиш утечку памяти и на клиенте и на сервере. Код: 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. 10^6 раз может выполнится только ResultSet resultset2 = st.executeQuery(""); в цикле. Ну и что что препарить буду, это один и тот же statement, никаких утечек на серваке не будет. На клиенте - ссылок на resultset2 не остается - garbage collector без проблем сам разберется. Если я не догоняю чего-то напишите где будут утечки. Я почему спросил про try-catch, суть не то что ресурсы освобождать не надо, ИМХО заворачивать каждый объект в try-finally не стоит, не такие уж тут гигантские растраты. Это ладно тут всего 2 стейтмента, а если их штук 5-7 будет, причем большинство вы только 1 раз откроете? На что ваш код похож будет??? Тут у Timm вроде бы универсальное решение (у него тоже кстати внутри цикла resultset2 не закрывается, так что из вашей логики 10^6 запросов в его коде сожрут столько же памяти) :-) все объекты который он использует в блоке try он объявляет выше а в finally просто контроль всех этих объектов чтоб закрыты были, это удобно, везде одинаково и не нужно думать закроется ли все или нет - 100% закроется. Но вопрос а нужно ли это вообще делать если следующей командой подключение закрываете???? а connection.close() - автоматом закрывает все объекты связанные с ним? авторpublic void close() throws SQLException Releases this Connection object's database and JDBC resources immediately instead of waiting for them to be automatically released Хотя может быть (точно не знаю, мож кто-нить просветит) так тщательно нужно закрывать объекты если, например, используется пул соединений, но тут я так понял мы говорим об обычном подключении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2005, 18:39 |
|
||
|
SQL-запросы
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ LinerА зачем делать явный rollback если для используемого подключения выставлено setAutoCommit(false)? Это тоже самое что делать commit если выставлено setAutoCommit(true).а где про это сказано? Хотел написать, что если после ошибок, подключение закрываем - зачем делать rollback? Из javadoc насчет connection.close(): Releases this Connection object's database and JDBC resources immediately instead of waiting for them to be automatically releasedСессия закроется и изменения в базу не уйдут. Но решил еще почитать и наткнулся на вот эту статейку. Офигеть!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2005, 19:11 |
|
||
|
SQL-запросы
|
|||
|---|---|---|---|
|
#18+
to Sergey Karpenkov Да, вопрос стоит в выборе древовидных структур из БД.В качестве сервера исп. Interbase. Структура таблицы такая: [ИдентификаторУзла] [ИмяУзла] [УказательНаРодитель] Алгоритм построения написан выше (сначала пишу запрос на выбор узлов у которых нет родителя,затем в цикле для каждого такого узла выполняю запрос по поиску его детей,если дети существуют то к род. узлу добавляю фиктивный узел). mansch такие задачи решаються на уровне sql или strored procedures Т.е. писать хранимую процедуру с параметром - по которому выбираются родительские узлы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2005, 20:00 |
|
||
|
SQL-запросы
|
|||
|---|---|---|---|
|
#18+
Sherstto Sergey Karpenkov Да, вопрос стоит в выборе древовидных структур из БД.В качестве сервера исп. Interbase. Структура таблицы такая: [ИдентификаторУзла] [ИмяУзла] [УказательНаРодитель] Алгоритм построения написан выше (сначала пишу запрос на выбор узлов у которых нет родителя,затем в цикле для каждого такого узла выполняю запрос по поиску его детей,если дети существуют то к род. узлу добавляю фиктивный узел). Дёргать базу из-за каждой ветки дерева идея очень плохая. Если конечно вложеность и количество узлов не оч большое то это прокатит, но при росте вложености и количества узлов абсолютно бесполезная трата ресурсов БД. В любом случае даже если следовать вашему алгоритму, то надо если есть такая возможность применять ленивую выборку. Если же надо всё дерево сразу, то я бы сильно подумал и всё таки попробовал изменить структуру так чтобы можно было сделать выборку за один приём, а потом уже рекурсивным алгоритмом разобрать полученый результ сет. Посмотрите вот сюда http://sdm.viptop.ru/articles/sqltrees.html может быть поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2005, 11:15 |
|
||
|
|

start [/forum/topic.php?fid=59&startmsg=33438358&tid=2150664]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
190ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 542ms |

| 0 / 0 |
