Нужна помощь для улучшения запроса T-SQL - PullRequest
1 голос
/ 01 декабря 2011

У меня есть таблица, которая содержит около 32 миллионов строк. В этой таблице есть item_id (не первичный ключ) и текстовый столбец.

Я хочу объединить текстовые столбцы с одинаковыми item_id. И используйте это в отчете.

До сих пор мы использовали ключевое слово FOR XML PATH для объединения. Но наш клиент не доволен задержкой.

Итак, мы попробовали COALESCE (мы попробовали метод, описанный здесь ), мы не получили должного результата (или, возможно, это займет слишком много времени)

Так, ребята, если вы знаете лучший метод, технику, вы можете мне помочь в этом вопросе?

Спасибо ...

Ответы [ 3 ]

0 голосов
/ 01 декабря 2011
  • Возможно использовать сжатые данные в качестве поля вместо символов.
  • Используйте таблицу с item_id в качестве первичного ключа с полями as: последний текстовый идентификатор и объединенный текст от первого идентификатора до последнего идентификатора.Обновите эту таблицу постепенно.Должно быть быстрее.Стоит двойной пробел.
0 голосов
/ 01 декабря 2011

Сделайте все это:

  1. Создание индексов для полей, которые являются частью вашего where.

  2. Вместо умножения Декарта используйте объединения (если вы используете умножение Декарта в своем запросе).

  3. В предложении where сначала ставьте более быстрые и менее вероятные логические операнды. Например, когда A и B равны true, если оба они истинны, поэтому, если A ложно, B вообще не будет рассчитываться, и вы выиграете много времени. Это может быть разницей в том, чтобы выполнять сотни тысяч логических проверок или не делать их, поэтому, конечно, это оптимизация.

Надеюсь, это поможет.

0 голосов
/ 01 декабря 2011

Добавить индекс для столбца item_id .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...