|
|
|
Медленный запрос, что можно сделать?
|
|||
|---|---|---|---|
|
#18+
Пишу программу для зарплаты, многопользовательская. Самоучка, программирование как хобби, изучаю MySQL. В главном окне выдаётся вся информация о сотрудниках: При переключении текущего месяца вся информация обновляется таким запросом: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Запрос очень медленный. 15 секунд выполняется. Пока меня основная идея - запускать этот запрос в фоне, после выполнения обновить втихую информацию на экране. Всё-таки без полного обновления всех сотрудников за текущий месяц возможно будут выводится неправильные общие суммы начислений и пр., т.к. параллельно предыдущий месяц может редактироваться другим бухгалтером. Структура таблиц: Код: 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. 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. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2014, 14:03:44 |
|
||
|
Медленный запрос, что можно сделать?
|
|||
|---|---|---|---|
|
#18+
Извините, правильный запрос на обновление всех расчётов всех сотрудников текущего месяца: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2014, 14:13:03 |
|
||
|
Медленный запрос, что можно сделать?
|
|||
|---|---|---|---|
|
#18+
Подробно не вникал, но бросается в глаза, что даты должны быть датами, а не парами год-месяц. Тогда индексы заработают с куда большей вероятностью и пользой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2014, 16:51:39 |
|
||
|
Медленный запрос, что можно сделать?
|
|||
|---|---|---|---|
|
#18+
miksoft, спасибо, сейчас потестирую... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2014, 17:10:27 |
|
||
|
Медленный запрос, что можно сделать?
|
|||
|---|---|---|---|
|
#18+
miksoft, ваш совет дал ощутимый результат, всё стало быстрее раз в 10. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 13:45:38 |
|
||
|
Медленный запрос, что можно сделать?
|
|||
|---|---|---|---|
|
#18+
Тьмутаракан, Также рекомендую оформить это дело в виде хранимой процедуры, и разделить там insert и update. Собственно, можно просто вначале insert недостающих записей с нулями, а потом -- только уже update нужного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2014, 12:42:34 |
|
||
|
Медленный запрос, что можно сделать?
|
|||
|---|---|---|---|
|
#18+
MasterZivТьмутаракан, Также рекомендую оформить это дело в виде хранимой процедуры, и разделить там insert и update. Собственно, можно просто вначале insert недостающих записей с нулями, а потом -- только уже update нужного.А откуда тут будет ускорение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2014, 12:45:24 |
|
||
|
Медленный запрос, что можно сделать?
|
|||
|---|---|---|---|
|
#18+
MasterZiv, с процедурами пока не сталкивался, но на будущее запомню совет. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2014, 12:59:57 |
|
||
|
Медленный запрос, что можно сделать?
|
|||
|---|---|---|---|
|
#18+
miksoftMasterZivТьмутаракан, Также рекомендую оформить это дело в виде хранимой процедуры, и разделить там insert и update. Собственно, можно просто вначале insert недостающих записей с нулями, а потом -- только уже update нужного.А откуда тут будет ускорение? Ускорение не обещаю, обещаю нормализацию и упрощение кода за счёт более грамотного оформления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2014, 13:38:10 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=164&tid=1834301]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
3ms |
| others: | 284ms |
| total: | 452ms |

| 0 / 0 |
