|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
Доброго вечера, уважаемые! Я небольшой спец в программировании, но приходится делать все самому, т.к. много мелких изменений постоянно, и проще переделать самому, чем долго искать спеца, да и не факт что сделают намного лучше. По-этому прошу ногами не пинать. Мною написано много подобных процедур, стиль написания будет понятен из листинга ниже. Можно ли существенно ускорить их выполнение? К примеру данный запрос выполняется секунд 20. Запросы идут потоком и в итоге все это долго. Если найдется спец который существенно ускорит данное безобразие - я готов заплатить. Может укажете на какие кардинальные ошибки? Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2013, 22:46 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
dimon71, план выполнения у вас ест? смотрите план выполнения и вы сам будете исправит ошибки ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2013, 22:55 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
dimon71Может укажете на какие кардинальные ошибки? 1) В теме не описаны исходные структуры; 2) В теме не описана сутьпроисходящего; 3) Код не обёрнут в соответствующий тег. dimon71Можно ли существенно ускорить их выполнение? К примеру данный запрос выполняется секунд 20. Запросы идут потоком и в итоге все это долго. Разбираться в этой некомементированной лапше нет никакого желания. Но навскидку весьма напоминает бред процедурного программиста, не понявшего суть SQL и плодящего итерационные циклы вместо одного простого запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2013, 23:50 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
natyaплан выполнения у вас есть? смотрите план выполнения и вы сам будете исправит ошибки Плюсую! Иногда достаточно индексы добавить/убрать, чтобы запрос начал летать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 09:09 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
HelenMnatyaплан выполнения у вас есть? смотрите план выполнения и вы сам будете исправит ошибки Плюсую! Иногда достаточно индексы добавить/убрать, чтобы запрос начал летать. Интересуюсь, Сонечка, хдеж ты тут запрос то увидела? У тредстартера тупая императивная процедура, которая на раз заменяется одним MERGE. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 09:13 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
dimon71, Тут совет один — писать запросами а не курсорами. Вот зачем тебе там курсор? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 09:24 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
Ув. автор топика, для простоты понимания, скажем так ,что Select * From [TableName] это типа как FOREACH Т.е. вы в селекте пройдете по каждой строке соответсвующей условию автоматически. Ровно также как при инсерте и апдейте. Т.е. вам надо для начала прочитать селект/инсерт/апдейт. Затем оформление хранимок. Затем начинать творить. Хотя курсоры и проходят указанный диапазон построчно, нужны они совсем для другого. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 09:30 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
dimon71, insert select и update from вместо курсора.. А вообще правильно сказали выше, изучите базовые инструкции T-SQL:) SELECT UPDATE INSERT ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 09:41 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
По хорошему, нам нужен отдельный faq по теме "как читать майкрософтовские хелпы". По своему опыту скажу, что конструкции типа автор [ <FOR Clause>] [ OPTION ( <query_hint> [ ,...n ] ) ] ввергают неокрепший разум в ужас и уныние. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 09:47 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
CammomileПо хорошему, нам нужен отдельный faq по теме "как читать майкрософтовские хелпы". По своему опыту скажу, что конструкции типа автор [ <FOR Clause>] [ OPTION ( <query_hint> [ ,...n ] ) ] ввергают неокрепший разум в ужас и уныние. Согласен с вами) А далее ещё: <query hint> ::= { } Но там всегда есть примеры, которые помогают осознать основные принципы, а далее просто время и разработка... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 09:53 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
Cammomile, и другие уважаемые форумчане. Большое спасибо за советы. Все понял. Пошел исправляться. Насчет замены нараз всего этого одним запросом, думаю ничего не выйдет. Покопаюсь. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 10:16 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
dimon71Cammomile, и другие уважаемые форумчане. Большое спасибо за советы. Все понял. Пошел исправляться. Насчет замены нараз всего этого одним запросом, думаю ничего не выйдет. Покопаюсь. Спасибо. вам тут про оператор merge намекали, вот и начните чтение справочной информации с него ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 10:23 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
CammomileПо хорошему, нам нужен отдельный faq по теме "как читать майкрософтовские хелпы".По хорошему, все уже давно написано. Синтаксические обозначения в Transact-SQL (Transact-SQL) Расширенная форма Бэкуса — Наура ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 10:28 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
РБНФ; век живи--век учись. Спасибо коллега! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 10:34 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
dimon71, Нет информации о размерах таблицы. Но 20 сек даже для миллиона записей много. Вряд ли в справочние товаров у Вас больше. Проверьте наличие и использование индексов. Использование курсоров не так уж критически сказывается на быстродействии. Зато намного наглядней алгоритм(скрипт). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 10:54 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
"Использование курсоров не так уж критически сказывается на быстродействии." Вот за такое хочеться взять и у...бедить так больше никогда-никогда не писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 10:59 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
DirksDR,когда отработает расскажите нам, как там курсор сказывается на скорости выполнения, ок? Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 11:16 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
Cammomileхочеться ==>хочется ну почему тут нельзя редактировать посты (((( ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 11:17 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
dimon71Cammomile, и другие уважаемые форумчане. Большое спасибо за советы. Все понял. Пошел исправляться. Насчет замены нараз всего этого одним запросом, думаю ничего не . К сожалению, только так и надо. Эту процедуру надо заменить на два запроса insert update, или один merge. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 11:38 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
CammomileПо хорошему, нам нужен отдельный faq по теме "как читать майкрософтовские хелпы". По своему опыту скажу, что конструкции типа автор [ <FOR Clause>] [ OPTION ( <query_hint> [ ,...n ] ) ] ввергают неокрепший разум в ужас и уныние.Ну ладно, нормальный хелп, на русском языке, с примерами. А эти "конструкции типа" обязательно надо изучить, так описываются синтаксические конструкции у всех производителей, и в учебниках, не только у микрософта. Эти конструкции на самом деле очень просты, всего лишь нужно понять, что озачают 3 вида скобок, многоточие и запятая. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 11:44 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
Cammomile"Использование курсоров не так уж критически сказывается на быстродействии." Вот за такое хочеться взять и у...бедить так больше никогда-никогда не писать. А кто это писал? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 11:45 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
CammomileПо хорошему, нам нужен отдельный faq по теме "как читать майкрософтовские хелпы". По своему опыту скажу, что конструкции типа автор [ <FOR Clause>] [ OPTION ( <query_hint> [ ,...n ] ) ] ввергают неокрепший разум в ужас и уныние. Вы не поверите, но про то, как читать майкрософтовские хелпы", есть в самом хелпе - Transact-SQL Syntax Conventions (Transact-SQL) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 11:48 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
ну вот же DirksDRdimon71, Нет информации о размерах таблицы. Но 20 сек даже для миллиона записей много. Вряд ли в справочние товаров у Вас больше. Проверьте наличие и использование индексов. Использование курсоров не так уж критически сказывается на быстродействии. Зато намного наглядней алгоритм(скрипт). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 11:48 |
|
Можно ли существенно оптимизировать данную процедуру.
|
|||
---|---|---|---|
#18+
Cammomile"Использование курсоров не так уж критически сказывается на быстродействии." Вот за такое хочеться взять и у...бедить так больше никогда-никогда не писать. Все зависит от конкретной задачи. И выигрывает всегда тот, кто знает больше способов. А не тот, у кого больше убеждений. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 11:51 |
|
|
start [/forum/topic.php?fid=46&tid=1706505]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 250ms |
total: | 414ms |
0 / 0 |