Добавил новые столбцы в таблицу и замедлил всю базу данных. Почему?

0

У меня есть таблица USERDATA и я добавил несколько новых столбцов. Все не являются NUL и по умолчанию 0 или 1. Однако после этого мой сайт стал медленным. Я имею в виду очень медленно. И это из-за этого сценария запроса на моем веб-сайте:

$num_rows = $db->doQuery('SELECT TOP 50 IDNum, IDName, Nation, (SELECT SUM(Loyalty) FROM USERDATA WHERE USERDATA.Knights = KNIGHTS.IDNum AND USERDATA.Authority = 1) as ClanLoyalty, (SELECT SUM(MannerPoint) FROM USERDATA WHERE USERDATA.Knights = KNIGHTS.IDNum AND USERDATA.Authority = 1) as ClanManner FROM KNIGHTS WHERE KNIGHTS.IDNum NOT IN (1,15001) ORDER BY ClanLoyalty DESC, IDName ASC');

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

USERDATA имеет только USERDATA раньше он работал хорошо. Я не указывал на константу, может быть, это проблема?

Я использую MSSQL Server 2005.

  • 0
    вы можете конвертировать не в в? Запрос @NoDisplayName может создать другой план, может быть намного лучше, чем ваш запрос. Можете ли вы поделиться схемой подчиненной таблицы с планом выполнения
Теги:
sql-server

1 ответ

0

Измените свой запрос следующим образом.

SELECT TOP 50 IDNum,
              IDName,
              Nation,
              Sum(Loyalty)     ClanLoyalty,
              Sum(MannerPoint)  ClanManner
FROM   KNIGHTS
       LEFT JOIN USERDATA
              ON USERDATA.Knights = KNIGHTS.IDNum
                 AND USERDATA.Authority = 1
WHERE  KNIGHTS.IDNum NOT IN ( 1, 15001 )
Group by IDNum,IDName,Nation
ORDER  BY ClanLoyalty DESC,
          IDName ASC 
  • 0
    Вы можете посмотреть обсуждение здесь, stackoverflow.com/questions/27007413/…
  • 0
    @RADAR Согласен, но OP дважды использовал один и тот же подзапрос, который можно удалить
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню