|
|
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
В Oracle лежит таблица логов, она оптимизирована и select по 5000000 занимаю несколько ms проблемы возникают при начитке ее со стороны сервера и отображения на клиенте Код: java 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. 47. Что можно здесь подправить? Выполнение занимает уже секунды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2016, 21:25 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
-=Koba=-Что можно здесь подправить? - проставь временные метки и будет видно где задержки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2016, 22:09 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
Petro123-=Koba=-Что можно здесь подправить? - проставь временные метки и будет видно где задержки Бегал в debug задержка тут return tq.setHint(QueryHints.READ_ONLY, HintValues.TRUE).getResultList(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2016, 22:19 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
Я конечно не рассчитываю как напрямую запрос выполнииться в бд по времени Но хотелось бы немного уменьшить время ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2016, 22:20 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
-=Koba=-, отправляемый sql можешь дать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2016, 22:24 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
-=Koba=-, Что такое "начитка"? Зачем вы сравниваете значения с помощью like и %? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 07:43 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Зачем вы сравниваете значения с помощью like и %? Правильно! Несколько лайков, абсолютно ненужных тут, сильно тормозят время выборки. И потом может имеет смысл отказаться от сортировки? Код: java 1. 2. 3. Может быть потом List<...> проще отсортировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 09:46 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
-=Koba=-В Oracle лежит таблица логов, она оптимизирована и select по 5000000 занимаю несколько ms с like и % в начале строки + order by Не верю. Даже при индексах по времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 10:33 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
-=Koba=-В Oracle лежит таблица логов, она оптимизирована и select по 5000000 занимаю несколько ms проблемы возникают при начитке ее со стороны сервера и отображения на клиенте Приведу аналогию - грузовик досок бригада разгрузит за 10 минут. Если же вначале в кузове разобрать все доски на 1. хвойные или лиственные 2. по длине 3. по ширине 4. по толщие 5. чтобы не было сучков то сколько займет времени разгрузка досок, соответствующих этим критериям? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 10:55 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
sanBez-=Koba=-В Oracle лежит таблица логов, она оптимизирована и select по 5000000 занимаю несколько ms с like и % в начале строки + order by Не верю. Даже при индексах по времени. lile и % в начале строки - а индекс в оракле используется в этом случае ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 11:20 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
lleming, по строке нет здесь наверняка по дате есть, что ТС и имеет ввиду, что выборка оптимизирована. Но выбрать 5 млн. и отсортировать. Ну не будет это меряться в ms. ИМХО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 11:39 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
sanBezНо выбрать 5 млн. вопрос в "выбрать куда"? Пусть выбирает с пагинацией. И тогда сортировка не проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 11:48 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
Petro123, пофиг куда. Из кода видно что в условии запроса некоторые поля могут опускаться. Грубо select startTime, FIO и select startTime, login для оптимальной выборки требуют аналогичных индексов. Даже без % и like. Держать кучу индексов под различные варианты запросов просто невозможно. На инсертах затормозишь БД. PS. Уже много раз видел как кто-нибудь выполняет запрос в SQLDeveloper, видит первые 50 строк за 2ms и считает что запрос уже выполнен. И море удивления когда прокручиваешь вниз записи, опа а там тормозульки. И тут до чела доходит: то что он увидел первые строки на экране еще не гарантирует что запрос полностью выполнился. Что-то мне кажется ТС так же оценивает скорость sql запроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 14:23 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
sanBezPS. Уже много раз видел как кто-нибудь выполняет запрос в SQLDeveloper, видит первые 50 строк за 2ms и считает что запрос уже выполнен. И море удивления когда прокручиваешь вниз записи, опа а там тормозульки. И тут до чела доходит: то что он увидел первые строки на экране еще не гарантирует что запрос полностью выполнился. не видел такого ни разу. Там вроде один поток работает. Если не выполнился, то часики тикают и ГУИ замёрзшее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 14:31 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
sanBezSQLDeveloper доказать очень просто? только у PL/SQL Developer: - взять запрос с блобами - сузить видимую область до 3-х строк. - запрос выполняется 15 сек. - расширить сплиттер на 15 строк и время возрастёт. Всё у него хорошо работает и прогеры продукта молодцы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 14:34 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
Petro123sanBezPS. Уже много раз видел как кто-нибудь выполняет запрос в SQLDeveloper, видит первые 50 строк за 2ms и считает что запрос уже выполнен. И море удивления когда прокручиваешь вниз записи, опа а там тормозульки. И тут до чела доходит: то что он увидел первые строки на экране еще не гарантирует что запрос полностью выполнился. не видел такого ни разу. Там вроде один поток работает. Если не выполнился, то часики тикают и ГУИ замёрзшее. Например ToAD для Oracle тоже быстро выгружает 500 строк, а остальные по запросу. Паджинация со стрелками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 15:02 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
Blazkowicz-=Koba=-, Что такое "начитка"? Зачем вы сравниваете значения с помощью like и %? Не совсем понял, ваш ответ. А как мне искать по условию 'Иван Ив'? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 15:29 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
SQL2008Blazkowicz Зачем вы сравниваете значения с помощью like и %? Правильно! Несколько лайков, абсолютно ненужных тут, сильно тормозят время выборки. И потом может имеет смысл отказаться от сортировки? Код: java 1. 2. 3. Может быть потом List<...> проще отсортировать? Попробую передлать на локальную сортировку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 15:30 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
sanBez-=Koba=-В Oracle лежит таблица логов, она оптимизирована и select по 5000000 занимаю несколько ms с like и % в начале строки + order by Не верю. Даже при индексах по времени. Да немного погорячился CriteriaBuilder формирует такой запрос Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Time 45-80 ms Код: java 1. Результат 5004121 (выполняется чуть более секунды, только, что заметил) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 15:34 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
USER_ACTIONS_LOG_VIEW это View join 2 таблиц Индексы стоят на 1 таблица sesssionKey startTime endTime 2 таблица login lastName (во вьешке USER_ACTIONS_LOG_VIEW FIO - это соединение трех столбцов) Код: java 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 15:38 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
-=Koba=-, Я думаю ты уже сам уже понял что к джаве данный вопрос отношения не имеет. По ораклу наверно надо определиться с порядком столбцов в первом индексе. Потому что запросы по сессии будут проскакивать быстро. А насколько часто они используются реальным юзером? Индекс-то под программиста кажется запилен :)) И не лучше ли выгадать на запросах по startTime? и насколько нужен в 2 таблица login lastName (во вьешке USER_ACTIONS_LOG_VIEW FIO - это соединение трех столбцов) второй столбец в индексе если наверно отношение login к lastName один к одному. Может вообще вначале вытащить логин(ы) из второй таблицы и по вьющке запрашивать условие только по полю login. Ну это так, фантазии мои... ЗЫ Где я че напутал по SQLDev и Toad каюсь. Грешен. Склероз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 16:54 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
sanBez-=Koba=-, Я думаю ты уже сам уже понял что к джаве данный вопрос отношения не имеет. По ораклу наверно надо определиться с порядком столбцов в первом индексе. Потому что запросы по сессии будут проскакивать быстро. А насколько часто они используются реальным юзером? Индекс-то под программиста кажется запилен :)) И не лучше ли выгадать на запросах по startTime? и насколько нужен в 2 таблица login lastName (во вьешке USER_ACTIONS_LOG_VIEW FIO - это соединение трех столбцов) второй столбец в индексе если наверно отношение login к lastName один к одному. Может вообще вначале вытащить логин(ы) из второй таблицы и по вьющке запрашивать условие только по полю login. Ну это так, фантазии мои... ЗЫ Где я че напутал по SQLDev и Toad каюсь. Грешен. Склероз Это разные индексы 1 таблица sesssionKey - indx 1 startTime - indx 2 endTime - indx 3 2 таблица login - indx 4 lastName (во вьешке USER_ACTIONS_LOG_VIEW FIO - это соединение трех столбцов) - indx 5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 17:39 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
Чтобы узнать, использует ли СУБД индекс - надо читать план запроса. Но это совсем не здесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 17:41 |
|
||
|
Чтение из БД
|
|||
|---|---|---|---|
|
#18+
-=Koba=-Это разные индексы дак что с пагинацией? Она важнее ваших индексов на миллионах записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 17:42 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39342239&tid=2123523]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
21ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 372ms |

| 0 / 0 |
