У меня есть таблица 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.
Измените свой запрос следующим образом.
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