|
|
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Есть таблица с двумя столбцами дата_начала, дата_конца. Задача выяснить максимальное количество строк диапазоны которых дата_начала и дата_конца пересекаются. Например это может быть звонковая таблица с началом и окончанием звонка, тогда задача формулируется: выяснить максимально количество звонков, которые были одновременно (пиковая нагрузка). В таблице находятся звонки совершенные за сутки. У меня есть пока две идеи как можно решить такую задачу. 1-ый Вариант: берем каждую строку таблицы и по дате начала из этой строки соединяем табличку саму на себя и считаем сколько звонков было одновременно с этой строчкой. Далее выбираем максимальное количество звонков. 2-ой Вариант: Поскольку звонки в таблице только за сутки. Разбиваем сутки на N точек времени и в каждую точку времени считаем количество звонков. Потом выбираем максимальное количество. Естественно это вариант теряет в точности т.к. некоторые звонки могут потерятся и не будут учтены. Звонков много поэтому первый вариант будет очень долго отрабатывать. Второй вариант будет быстрее (в зависимости от количества на сколько точек разобьются сутки), но он теряет в точности. Подскажите, пожалуйста, может есть какое еще оптимальное решение данной задачи? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 10:02 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
Буремигзадача формулируется: выяснить максимально количество звонков, которые были одновременно (пиковая нагрузка). Что должно получиться на таких данных? дата_началадата_конца00:01:0000:02:0100:02:0000:03:0100:03:0000:04:0100:04:0000:05:01 ......23:57:0023:58:0123:58:0023:59:01 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 10:12 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
Буремиг, count(звонок) over(order by время range between current row and interval 'одновременно' minute|/second following) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 10:35 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
БуремигПодскажите, пожалуйста, может есть какое еще оптимальное решение данной задачи? 1. Количество одновременных звонков меняется в момент начала очередного звонка (увеличивается) и завершения (уменьшается). Максимальное количество достигается в момент увеличения. Таким образом, имеет смысл считать количество звонков только на date_start каждого звонка. 2. Количество одновременных звонков = номер_звонка_по_порядку - количество_успевших_завершиться. Отсюда вывод: строится выборка вида (дата_начала; кол-во успевших завершиться с предыдущей даты начала) и в общем уже всё просто. 3. Если задача учебная, то, думаю, хватит. Если же боевая - подозреваю, что оптимальная реализация таки будет PL/SQL-ной, причём формулировка сменится с "найти точную пиковую нагрузку" на что-нибудь типа "найти интервалы времени, когда нагрузка не менее 70% от пиковой". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 10:52 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
Отправной запрос: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: 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. P.S. PL/SQL тут отдыхает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 11:32 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
softwarer1. Количество одновременных звонков меняется в момент начала очередного звонка (увеличивается) и завершения (уменьшается). Оно уменьшается "в момент, следующий за завершением звонка". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 11:38 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
SQL*PlusОно уменьшается "в момент, следующий за завершением звонка". Не подскажете ли, какое именно число "следует за числом 1.28342"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 11:41 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
softwarerSQL*PlusОно уменьшается "в момент, следующий за завершением звонка".Не подскажете ли, какое именно число "следует за числом 1.28342"?Не подскажу... :-) Но в звонках используются DATE. Значения этого типа данных дискретны. "момент, следующий за завершением звонка" = "дата-время завершения звонка" + 1 секунда. "По-моему, так!" :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 11:58 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
SQL*PlusНо в звонках используются DATE. Значения этого типа данных дискретны. Значения любого примитивного типа данных дискретны. В том числе number-а. SQL*Plus"момент, следующий за завершением звонка" = "дата-время завершения звонка" + 1 секунда. "По-моему, так!" :-) Даже если формат представления непрерывных данных дискретен, попытка работать с ними в этом ключе приводит только к дополнительному геморрою, имхо. Грубо говоря, из вариантов Код: plaintext 1. 2. весьма трудно назвать хоть какой-либо плюс третьего. В том числе и с точки зрения бизнес-логики гораздо удобнее работать на полуоткрытых интервалах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 12:22 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
softwarerиз вариантов Код: plaintext 1. 2. весьма трудно назвать хоть какой-либо плюс третьего. Один плюсик таки есть: его можно переписать как Код: plaintext В то же время вариант 1 в запросе сразу выдает "нуба", который вскоре придет с просьбой "ускорить запрос". Не на 100%, но на 98 - точно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 12:29 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
softwarer, Мы обсуждали когда наступает момент уменьшения кол-ва звонков. Если это правильно и понятно определено, то способы учета данного факта - это уже дело техники. P.S. Замечу, что для реальных расчетов секунда туда-сюда не имеет практически никакого значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 12:30 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
[quot SQL*PlusP.S. Замечу, что для реальных расчетов секунда туда-сюда не имеет практически никакого значения.[/quot] Ну не скажите. Имеет, причем существенное - если работаете с "версионными" объектами с заданными интервалами существования версий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 12:32 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
Буремиг, Как мне кажется будет работать ваш второй вариант с разбивкой на N точек времени, но делать это не через равный промежуток времени, а в моменты начала очередного звонка (соотвественно убрав дубликаты из этих точек времени), т.к. пиковая нагрузка возникает именно в начале какого-то определенного звонка (-ов). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 12:37 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
softwarerБуремигПодскажите, пожалуйста, может есть какое еще оптимальное решение данной задачи? 1. Количество одновременных звонков меняется в момент начала очередного звонка (увеличивается) и завершения (уменьшается). Максимальное количество достигается в момент увеличения. Таким образом, имеет смысл считать количество звонков только на date_start каждого звонка. Спасибо, за идею с тем, что достаточно посчитать количество завершенных звонков, на текущий момент. Elic Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Спасибо, за наглядную демонстрацию. Не додумался, что начало и конец звонка можно в одно поле сложить с весом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 12:38 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousSQL*PlusP.S. Замечу, что для реальных расчетов секунда туда-сюда не имеет практически никакого значения.Ну не скажите. Имеет, причем существенное - если работаете с "версионными" объектами с заданными интервалами существования версий.Я не совсем точно выразился. Имелось в виду - для реальных статистических расчетов. При использовании "версионных" объектов для статистики крайне важно однозначное понимание "что такое сутки" всеми приложениями и их пользователями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 12:39 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
SQL*Plus, softwarer Мне кажется что ваш спор насчет момента завершения звонка имел бы место быть если бы необходимо было определить максимальную пиковую нагрузку и интервал времени который он продолжался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 12:41 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
UScorpБуремиг, Как мне кажется будет работать ваш второй вариант с разбивкой на N точек времени, но делать это не через равный промежуток времени, а в моменты начала очередного звонка (соотвественно убрав дубликаты из этих точек времени), т.к. пиковая нагрузка возникает именно в начале какого-то определенного звонка (-ов). Звонков много. Такой алгоритм тормозить будет. Elic - классную идею подал. За один проход получаем для каждого звонка, сколько звонков было еще активных. Плюс второй проход на выяснение максимума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 12:41 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
UScorp SQL*Plus, softwarer Мне кажется что ваш спор насчет момента завершения звонка имел бы место быть если бы необходимо было определить максимальную пиковую нагрузку и интервал времени который он продолжался Хотя из Буремиг Есть таблица с двумя столбцами дата_начала, дата_конца. Задача выяснить максимальное количество строк диапазоны которых дата_начала и дата_конца пересекаются. так и выходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 12:46 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
UScorpUScorp SQL*Plus, softwarer Хотя из [quot Буремиг] Есть таблица с двумя столбцами дата_начала, дата_конца. Задача выяснить максимальное количество строк диапазоны которых дата_начала и дата_конца пересекаются. так и выходит Задача только узнать пиковую нагрузку. Временные диапазоны пиковой нагрузки не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 12:52 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousОдин плюсик таки есть: его можно переписать как что временами слегка повышает читабельность. Имхо, это "временами" исчезающе мало. andrey_anonymousВ то же время вариант 1 в запросе сразу выдает "нуба" Поэтому приведены второй и третий :) Но первый таки куда лучше, например, в if-е. SQL*PlusМы обсуждали когда наступает момент уменьшения кол-ва звонков Не совсем так, имхо. "Когда наступает момент" - вопрос довольно философский, уровня хлопка одной ладонью. Мы знаем, когда пользователь нажал на кнопку, а вот "в этот момент звонок ещё есть или уже нет" - можно спорить совершенно попусту неограниченное количество времени; не думаю, что мы хотим этим заниматься :) Для практических задач имеет смысл вопрос, например, "оборудование занято обслуживанием звонка или свободно и может обслужить другой звонок". Время наступления нового статуса мы можем чётко определить и вопросов это не вызовет. Грубо говоря, нас интересует, сколько надо телефонных линий, чтобы обслужить звонки 10:00:00 - 10:01:00 и 10:01:00 - 10:02:00 - то ли одна, то ли две. Согласны? И, наконец - что мы собственно, имхо, обсуждаем - одни и те же данные можно хранить по-разному. Можно хранить в варианте (первая_секунда_когда_оборудование_стало_занято; последняя_секунда_когда_оно_ещё_было_занято), можно в варианте (первая_секунда_когда_оборудование_стало_занято; первая_секунда_когда_оно_стало_свободно). SQL*PlusP.S. Замечу, что для реальных расчетов секунда туда-сюда не имеет практически никакого значения. Зато могут иметь значение технические детали, например то, что переключение само по себе занимает время. Так или иначе, здесь имхо главное, о чём стоит упомянуть - проектировать данные и работать с ними имхо следует таким образом, чтобы не заморачиваться "плюс-минус секундами". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 13:04 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
Elic Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Через 7+ лет спасибо, но есть маленький нюанс. если звонки начинаются или заканчиваются в один момент времени -необходимо чуть изменить запрос: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2018, 17:37 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
Vintесли звонки начинаются или заканчиваются в один момент времениtimestamp-ы не на винде одинаковыми не бывают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2018, 18:03 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
Vintнеобходимо чуть изменить запрос:После Vint Код: plsql 1. становится ненужным Vint Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2018, 18:18 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
Elic, к тебе никаких претензий) мне понадобилось считать проживающих в диапазоне по дням. и там и начинаться и заканчиваться могут в один день. поэтому для тех кто выезжает в один день еще и start_of_group для объединения интервалов пришлось добавить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2018, 18:20 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
Vint, я 7+ лет не могу понять тайный смысл cnt not between 1 and 4 and (заработался я наверное) Код: plsql 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. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2018, 18:36 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
andrey_anonymoussoftwarerиз вариантов Код: plsql 1. 2. 3. весьма трудно назвать хоть какой-либо плюс третьего. Один плюсик таки есть: его можно переписать как Код: plsql 1. что временами слегка повышает читабельность. В то же время вариант 1 в запросе сразу выдает "нуба", который вскоре придет с просьбой "ускорить запрос". Не на 100%, но на 98 - точно :) А будьте любезны, объясните, пожалуйста, почему? Ибо я из этих нубов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2018, 19:00 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
А почемуА будьте любезны, объясните, пожалуйста, почему? Ибо я из этих нубов. Думаю, Андрей имел в виду, что первый вариант, в отличие от второго и третьего, не сможет воспользоваться индексом по полю dt. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2018, 19:07 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
softwarerА почемуА будьте любезны, объясните, пожалуйста, почему? Ибо я из этих нубов. Думаю, Андрей имел в виду, что первый вариант, в отличие от второго и третьего, не сможет воспользоваться индексом по полю dt.стоит еще учитывать, что иногда имеет смысл создавать индекс на trunc даты до часа или суток, т.к. это позволяет искать по обоим вариантам, как по trunc(поле_даты) between ..., так и по "поле_даты between :1 and :2", ну и иногда уменьшить размер индекса Код: plsql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2018, 19:26 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
Staxя 7+ лет не могу понять тайный смысл cnt not between 1 and 4Просто чтобы убрать непоказательный шум именно на том "случайном" наборе данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 08:05 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
Elic, ясно, спасибо ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 10:03 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
softwarerА почемуА будьте любезны, объясните, пожалуйста, почему? Ибо я из этих нубов. Думаю, Андрей имел в виду, что первый вариант, в отличие от второго и третьего, не сможет воспользоваться индексом по полю dt. То есть если индекса нет, то все 3 варианта будут выполняться одно время? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2018, 13:01 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
ElicVintесли звонки начинаются или заканчиваются в один момент времениtimestamp-ы не на винде одинаковыми не бывают.Спорное утверждение. Просто на практике встречались дубли, база под Linux. Возможно, из за RAC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2018, 13:04 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
А почемуТо есть если индекса нет, то все 3 варианта будут выполняться одно время? Спасибо. Быстрее будет, если union all заменить на join. Экономится один скан таблицы. Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2018, 13:41 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
Alexander_TtlElicпропущено... timestamp-ы не на винде одинаковыми не бывают.Спорное утверждение. Просто на практике встречались дубли, база под Linux. Возможно, из за RAC. надо еще понять (не всем дано) что Elic имел ввиду в контексте авторесли звонки начинаются или заканчиваются в один момент времени два звонка могут начатся и закончится в один момент времени, зависит от оборудования напр две независимые стойки, почему б им (завонкам) не начатся в один момент времени, тем более закочится да и банальный systimestamp (не помню скоко там точнось, допустим 6 знаков) если процессор намного быстрее 1000000 то почему б и не получить одинаковые значения если в ф-ции (ос) стоит задержка 0.000001 то откуда уверенность что в винде ее нет опять же в могопроцессорных системах, неужели на разных процессорах нельзя получить одинаковые timestamp ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2018, 13:55 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
Stax, про таймстемпы на винде просто лень искать тему. на юниксах каждый вызов таймстемпа точно занимает какое то время, там кажется 8 символов после секунд. у винды точно 6 символов после секунд не всегда хватает чтобы отловить разницу. насчет того что пересекаются или нет уже не важно. главное сама идея...) я ее пол дня вспоминал. точно видел не единожды.... но всегда когда надо нет под рукой) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2018, 23:45 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
Vintу винды точно 6 символов после секунд не всегда хватает чтобы отловить разницу.На винде у TS всего 3 знака. Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2018, 09:00 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
Vint, Спасибо, нашел https://books.google.com.ua/books?id=NkulDQAAQBAJ&pg=PA251&lpg=PA251&dq=linux timestamp точность&source=bl&ots=QHR35OdLoP&sig=X2k_m9U-VRbvXlNYMSLfMZOlzgg&hl=uk&sa=X&ved=0ahUKEwiEtounys_ZAhUQZlAKHbLyDykQ6AEIhQEwCQ#v=onepage&q=linux timestamp точность&f=false в оракле сколько знаков? вроде 6, хотя в маске 9 (мож на будущее) 1) если процессоры сильно быстрые, то могут получить время с разницей в 7-м знаке, оракля обрежет до 6-ти получим одинаковые 2) два быстрые процессоры одновременно обратились за временем к ос, они ж получат одинаковое время? 3) в телефонии (с чего все и началось) запросто можно получить одинаковое время начала/окончания звонка хоть там и 20 знаков после зы для меня ето не принципиально, так для общего развития ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2018, 10:26 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
ElicНа винде у TS всего 3 знака.Не знаю, что именно пользует оракл, но на винде стандартный системный таймер имеет точность от 10 до 16 миллисекунд. Точный таймер 20 микросекунд. Если первое, то честных и 3х знаков нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2018, 11:25 |
|
||
|
Задача с пересекающимися диапазонами
|
|||
|---|---|---|---|
|
#18+
винапи.Не знаю, что именно пользует оракл, но на винде стандартный системный таймер имеет точность от 10 до 16 миллисекунд. Точный таймер 20 микросекунд. Если первое, то честных и 3х знаков нет. TIMESTAMP Precision (Doc ID 2299085.1) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2018, 12:34 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1884342]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
259ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 607ms |

| 0 / 0 |
