Nano Hash - криптовалюты, майнинг, программирование

Могут ли соединения между представлениями и таблицей снизить производительность?

Я новичок в sql server,

мой менеджер дал мне работу, где я должен узнать производительность запроса в sql server 2008.

Этот запрос очень сложен, поскольку он имеет соединения между представлениями и таблицей. Я читал в Интернете, что объединение представлений и таблиц приводит к снижению производительности?

Может ли мне в этом помочь специалист? Любая хорошая ссылка, по которой я нашел информацию об этом? Как рассчитать производительность запроса на сервере sql?


Ответы:


1

Посмотрите на план запроса - он может быть чем угодно. Отсутствуют индексы в одной из базовых таблиц представления, отсутствуют индексы в объединенной таблице или что-то еще.

Взгляните на эту статью Гейл Шоу о поиске проблем с производительностью в SQL Server - часть 1, часть 2.

23.09.2011
  • Спасибо, Одед, я обязательно пройду по этой ссылке. 23.09.2011

  • 2

    Представление (которое не проиндексировано / материализовано) - это просто макрос: ни больше, ни меньше

    То есть он расширяется во внешний запрос. Таким образом, соединение с 3 представлениями (с 4, 5 и 6 соединениями соответственно) становится одним запросом с 15 JOIN.

    Это распространенная ошибка «Я могу использовать это повторно»: DRY обычно не применяется к коду SQL.

    В противном случае см. Ответ Одеда.

    23.09.2011

    3

    Одед прав, вам обязательно стоит начать с плана запроса. Тем не менее, есть несколько вещей, которые вы уже можете увидеть на высоком уровне, например:

    ПРЕОБРАЗОВАТЬ (VARCHAR (8000), CN.Note) КАК '% T B9997%'

    LIKE поисковые запросы с подстановочным знаком впереди - плохие новости с точки зрения производительности из-за того, как работают индексы. Если задуматься, в телефонной книге легко найти всех людей, чьи имена начинаются с «Smi». Если вы попытаетесь найти всех людей, у которых есть «mit» в любом месте своего имени, вы обнаружите, что вам нужно прочитать всю телефонную книгу. SQL Server делает то же самое - это называется полным сканированием таблицы и обычно выполняется довольно медленно. Другая проблема заключается в том, что левая часть условия использует функцию для изменения столбца (в частности, преобразования его в varchar). По сути, это снова означает, что SQL Server не может использовать индекс, даже если он был для столбца CN.Note.

    Я предполагаю, что столбец - это text столбец, и вам не будет разрешено изменять логику фильтра, чтобы удалить подстановочный знак в начале поиска. В этом случае я бы порекомендовал изучить полнотекстовый поиск / индексирование функциональность. Включив полнотекстовое индексирование и используя определенные ключевые слова, такие как CONTAINS, вы должны повысить производительность.

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

    23.09.2011
  • Спасибо, Даниэль. Я только что проверил просмотры, индексов там нет. Будет ли это создавать проблемы с производительностью? 26.09.2011
  • @HemantKothiyal - в этом случае я не верю, что ваш запрос будет использовать индекс, даже если бы он был там (по причинам, упомянутым выше). В целом, да, правильная индексация позволяет решить большинство проблем с производительностью запросов. Эта тема слишком широка, чтобы ее можно было охватить в комментариях. Я бы порекомендовал вам ознакомиться с индексами и оптимизацией. Относительно хорошее место для начала - здесь, хотя что-то вроде здесь более подробно. 26.09.2011
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..