|
Можно ли оптимизировать данный тригер?
|
|||
---|---|---|---|
#18+
Сваял типа универсальный тригер для записи изменений, но чую, что тормозит (без него на порядок быстрее). Если можно, дайте пару советов, что можно сделать... Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 14:34 |
|
Можно ли оптимизировать данный тригер?
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 15:12 |
|
Можно ли оптимизировать данный тригер?
|
|||
---|---|---|---|
#18+
RIO08, авторIF EXISTS( SELECT * FROM inserted) AND NOT EXISTS (SELECT * FROM deleted) И зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 23:18 |
|
Можно ли оптимизировать данный тригер?
|
|||
---|---|---|---|
#18+
Владислав Колосов RIO08, авторIF EXISTS( SELECT * FROM inserted) AND NOT EXISTS (SELECT * FROM deleted) И зачем? ну так типо проверяется тригер сработал на апдейт или инсерт, что тут такого экстраординарного? RIO08, 1) универсальные триггеры - зло, сделайте лучше несколько на каждый тип события 2) в начале проверяйте на возможное "ложное срабатывание" (обработка пустого набора) вида Код: sql 1. 2.
немного сэкономите на cpu, если исходный запрос не обрабатывал строки таблицы. 3) меня больше смутило вот это: Код: sql 1. 2.
вывести строки "старые данные" в том случае когда значения старых не совпадают с новыми? почему было не написать через EXCEPT? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 23:55 |
|
Можно ли оптимизировать данный тригер?
|
|||
---|---|---|---|
#18+
Владислав Колосов IF EXISTS( SELECT * FROM inserted) AND NOT EXISTS (SELECT * FROM deleted) И зачем? Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 08:34 |
|
Можно ли оптимизировать данный тригер?
|
|||
---|---|---|---|
#18+
felix_ff, 1. Знаю, но надо попробовать. 2. Введу. 3. Переделаю. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 08:38 |
|
Можно ли оптимизировать данный тригер?
|
|||
---|---|---|---|
#18+
RIO08 Владислав Колосов IF EXISTS( SELECT * FROM inserted) AND NOT EXISTS (SELECT * FROM deleted) И зачем? Код: sql 1. 2. 3.
Сделайте два триггера без этих идиотских проверок! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 09:07 |
|
Можно ли оптимизировать данный тригер?
|
|||
---|---|---|---|
#18+
felix_ff почему было не написать через EXCEPT? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 09:29 |
|
Можно ли оптимизировать данный тригер?
|
|||
---|---|---|---|
#18+
invm felix_ff почему было не написать через EXCEPT? Except работает на 25% дольше. Оставил первый вариант. Так же запись в одну таблицу, без общего протокола работает на 30% быстрее... Придётся оставить одну таблицу, добавив всякую фигню в table_log ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 10:35 |
|
Можно ли оптимизировать данный тригер?
|
|||
---|---|---|---|
#18+
SQL2008, По производительности разница незначительная. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 10:37 |
|
Можно ли оптимизировать данный тригер?
|
|||
---|---|---|---|
#18+
RIO08 SQL2008, По производительности разница незначительная. Страдалец, "улучшение производительности" - это логику менять. Ты не понимаешь самого тривиального: INSERT нет смысла журналировать. Когда осознаешь эту тривиальную истину - увеличишь быстродействие в два раза. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 11:07 |
|
Можно ли оптимизировать данный тригер?
|
|||
---|---|---|---|
#18+
aleks222 RIO08 SQL2008, По производительности разница незначительная. Страдалец, "улучшение производительности" - это логику менять. Ты не понимаешь самого тривиального: INSERT нет смысла журналировать. Когда осознаешь эту тривиальную истину - увеличишь быстродействие в два раза. в одной таблице логов сразу видишь всю картину ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:13 |
|
Можно ли оптимизировать данный тригер?
|
|||
---|---|---|---|
#18+
andreymx [иногда/часто/редко аналитики требуют. в одной таблице логов сразу видишь всю картину Union all у вас там отменили? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:17 |
|
Можно ли оптимизировать данный тригер?
|
|||
---|---|---|---|
#18+
aleks222 andreymx [иногда/часто/редко аналитики требуют. в одной таблице логов сразу видишь всю картину Union all у вас там отменили? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:52 |
|
Можно ли оптимизировать данный тригер?
|
|||
---|---|---|---|
#18+
andreymx aleks222 пропущено... Union all у вас там отменили? Если все так печально, точно также, достаточно журналировать inserted. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 16:08 |
|
Можно ли оптимизировать данный тригер?
|
|||
---|---|---|---|
#18+
RIO08 Владислав Колосов IF EXISTS( SELECT * FROM inserted) AND NOT EXISTS (SELECT * FROM deleted) И зачем? Код: sql 1. 2. 3.
Суть моего вопроса была - почему просто не создать AFTER INSERT триггер для обработки этого события? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 16:16 |
|
|
start [/forum/topic.php?fid=46&msg=40084988&tid=1684483]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 132ms |
0 / 0 |