Можно ли поддерживать запрос на 43 страницы?[закрыто]

StackOverflow https://stackoverflow.com/questions/800620

  •  03-07-2019
  •  | 
  •  

Вопрос

Я всегда думал, что компилятор SQL сломается, но очевидно, что вложение может быть почти бесконечным.Следует ли немедленно выбросить этот код или есть какой-то проблеск надежды, что что-то подобное может работать?

Этот запрос на самом деле не принадлежит мне, поэтому я не могу его опубликовать...Однако давайте просто представим, что это так. Вот этот:

[SELECT /*+ NOPARALLEL bypass_recursive_check */ 
SP_ALIAS_190, 
((CASE SP_ALIAS_191
WHEN 1
THEN 'PROVIDER::ALL_PROV::'
WHEN 0]
Это было полезно?

Решение

Если запрос генерируется инструментом (или кодом), то его может быть относительно просто поддерживать (в том смысле, что код генерации запроса на самом деле может быть хорошо написан и удобен в обслуживании).

Другие советы

Очевидно, вы никогда не видели SQL-запрос, исходящий из Sharepoint DAL.

Недавно я столкнулся с подобной проблемой и принял решение, рассмотрев несколько вещей:

  • Сколько времени потребуется на поддержание vs.переписать?
  • Насколько это критично?Может быть много логики, которую может быть трудно разгадать, и ценность того факта, что «это работает», превышает ценность немедленной перезаписи.

И, конечно же, руководство должно было принять политическое решение относительно риска объяснить, почему то, что было недавно создано, должно быть переписано.

В конце концов (для меня) find+replace оказался моим другом.

Выполните рефакторинг с помощью С заявление.Добавляйте много-много-много комментариев.

Если вы разобьете его на части, которыми можно будет управлять, у вас будет гораздо больше шансов.

Если бы он содержал много вложений, я бы сказал нет.

Как и любой код, независимо от языка, вам следует переписывать его только потому, что вы можете сделать его более эффективным или простым для понимания.

Основываясь на моем опыте, я смог уменьшить размер плохо написанного SQL в 4–5 раз и во много раз уменьшить его производительность, потому что первоначальный автор понятия не имел об этом.

Если вы считаете, что это плохо, вам следует посмотреть пример видео Industrial Logic о запахе кода: Технический долг.Определенно не генерируется автоматически.

Можно ли поддерживать 43-страничную функцию, скажем, на C#?Ответ очевиден ;).Я просто не могу себе этого представить.На вашем месте я бы разбил его на более мелкие части.

Две вещи:

  • Будут ли когда-либо читать этот SQL только машины?
  • Вы застряли в базовой схеме?

Если у вас есть запрос на 43 страницы и вы ответили утвердительно на первые два вопроса, добро пожаловать в разработку SharePoint.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top