|
|
|
помогите ускорить обработку. FDMemTable почему-то работает медленно
|
|||
|---|---|---|---|
|
#18+
не пинайте. я начинающий. с БД сталкиваюсь впервые. понадобилось сконвертировать данные в таблице более 300 000 строк. таблица вида: id, dateFrom, dateTo, lD_CL, inA, inB, status ... записи периодами 15 минут (но не все). т.е. например dateFrom = '01.01.2020 10:00:00' dateTo = '01.01.2020 10:15:00' и т.д понадобилось сконвертировать в 1 часовые. НО с доп проверкой их полноты и т.д.... До sql запроса я не смог догадаться, как голову ни ломал... плюс нужна доп обработка, поэтому слобал на дельфи: Код: pascal 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. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. обрабатывает около СУТОК !!! что я делаю неправильно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2020, 15:33 |
|
||
|
помогите ускорить обработку. FDMemTable почему-то работает медленно
|
|||
|---|---|---|---|
|
#18+
deamountчто я делаю неправильно ? На первый взгляд, даже не читая документацию на отдельные использованные методы - практически всё. Даже если у тебя не хватило фантазии на запрос - всегда остётся возможность использовать ХП с курсором внутри. Но придётся чётко сформулировать логику "доп.обработки". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2020, 15:43 |
|
||
|
помогите ускорить обработку. FDMemTable почему-то работает медленно
|
|||
|---|---|---|---|
|
#18+
доп обработка: доп поле status в таблице выставлять в зависимости от того, за весь ли час есть данные, превышена ли их погрешность, были ли ошибки при получении данных от оборудования. все это рассчитывается из данных inA inB inC ... ну для начала напрмер, сделать status=1 когда данные за весь час или status=0 когда данные не за весь час. мда... что такое ХП и курсор вообще хз :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2020, 15:46 |
|
||
|
помогите ускорить обработку. FDMemTable почему-то работает медленно
|
|||
|---|---|---|---|
|
#18+
поделитесь, пожалуйста, примером или ссылками, как правильно реализовать обработку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2020, 16:18 |
|
||
|
помогите ускорить обработку. FDMemTable почему-то работает медленно
|
|||
|---|---|---|---|
|
#18+
deamountну для начала напрмер, сделать status=1 когда данные за весь час или status=0 когда данные не за весь час. Что такое "данные за весь час", в коде? Когда ты это определишь - сможешь внести это условие в SQL оператор CASE. deamountчто такое ХП и курсор вообще хз ХП это "хранимая процедура". Как и курсор - ищется в документации по твоей СУБД, которую ты не удосужился назвать. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2020, 16:45 |
|
||
|
помогите ускорить обработку. FDMemTable почему-то работает медленно
|
|||
|---|---|---|---|
|
#18+
спасибо за ответы записи периодами 15 минут (но не все). т.е. например dateFrom = '01.01.2020 10:00:00' dateTo = '01.01.2020 10:15:00' и т.д понадобилось сконвертировать в 1 часовые например строки id=1, dateFrom = '01.01.2020 10:00:00' dateTo = '01.01.2020 10:15:00', 1, 2, 3 id=5, dateFrom = '01.01.2020 10:15:00' dateTo = '01.01.2020 10:30:00', 1, 2, 3 id=7, dateFrom = '01.01.2020 10:30:00' dateTo = '01.01.2020 10:45:00', 1, 2, 3 id=2, dateFrom = '01.01.2020 10:45:00' dateTo = '01.01.2020 11:00:00', 1, 2, 3 собираются в одну строку: id=8, dateFrom = '01.01.2020 10:00:00' dateTo = '01.01.2020 11:00:00', 4, 8, 12, status=1 или id=12, dateFrom = '01.01.2020 10:00:00' dateTo = '01.01.2020 10:05:00', 1, 2, 3 id=53, dateFrom = '01.01.2020 10:05:00' dateTo = '01.01.2020 10:10:00', 1, 2, 3 id=64, dateFrom = '01.01.2020 10:10:00' dateTo = '01.01.2020 10:15:00', 1, 2, 3 id=42, dateFrom = '01.01.2020 10:15:00' dateTo = '01.01.2020 10:20:00', 1, 2, 3 id=23, dateFrom = '01.01.2020 10:50:00' dateTo = '01.01.2020 11:00:00', 1, 2, 3 собираются в одну строку: id=86, dateFrom = '01.01.2020 10:00:00' dateTo = '01.01.2020 11:00:00', 5, 10, 15, status=0 (0, т.к. нет данных с 10:20 до 10:50 ) извиняюсь, не обозначил базу - это MySQL базу проектировал не я, софт производителя работает быстро. значит там уже должны быть нужные ХП? я так понял ХП хранится в базе. поищу .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2020, 17:09 |
|
||
|
помогите ускорить обработку. FDMemTable почему-то работает медленно
|
|||
|---|---|---|---|
|
#18+
deamountсобираются в одну строку: И в чём проблема? Это тривиальный GROUP BY + SUM() + CASE WHEN COUNT(*) = 4 then 1 else 0 END as status. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2020, 17:13 |
|
||
|
помогите ускорить обработку. FDMemTable почему-то работает медленно
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Это тривиальный GROUP BY + SUM() + CASE WHEN COUNT(*) = 4 then 1 else 0 Нихрена не тривиальный COUNT(), у него надо чтобы произвольные отрезки времени покрывали весь час, тогда status = 1, а если какой-то интервал пропущен, то status = 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2020, 18:23 |
|
||
|
помогите ускорить обработку. FDMemTable почему-то работает медленно
|
|||
|---|---|---|---|
|
#18+
alekcvpу него надо чтобы произвольные отрезки времени покрывали весь час Значит их надо предварительно сгруппировать в 15-ти минутные. Я не в курсе поддерживает ли MySQL derived tables, но ХП и тут справится. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2020, 18:31 |
|
||
|
помогите ускорить обработку. FDMemTable почему-то работает медленно
|
|||
|---|---|---|---|
|
#18+
спасибо! дело сдвинулось с мертвой точки пока что без учета статусов и доп обработки собрал суммы: Код: sql 1. 2. 3. 4. 5. 6. мои ранние попытки были неудачными, потому что не знал функций обработки времени Код: plsql 1. ЗА 9 СЕКУНД вместо целых суток! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2020, 19:12 |
|
||
|
помогите ускорить обработку. FDMemTable почему-то работает медленно
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, можно ли без функции добавить конструкцию Код: sql 1. в мою выборку? вот так ругается на синтаксис Код: sql 1. 2. 3. 4. 5. 6. 7. подскажите, как без хп верно написать запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2020, 20:07 |
|
||
|
помогите ускорить обработку. FDMemTable почему-то работает медленно
|
|||
|---|---|---|---|
|
#18+
deamount, Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2020, 22:44 |
|
||
|
помогите ускорить обработку. FDMemTable почему-то работает медленно
|
|||
|---|---|---|---|
|
#18+
deamount ЗА 9 СЕКУНД вместо целых суток! Начало пути... Оно такое, да Тоже натыкался на похожие моменты, не так разительно, но все же... Оптимизация - весчь! Респект тем старшим товарищам по форуму :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2020, 00:23 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39953842&tid=2038360]: |
0ms |
get settings: |
13ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 343ms |

| 0 / 0 |
