나는 테이블 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
에는 32k 개의 행이 있으며 이전에는 모두 좋았습니다. 내가 constaint 지정하지 않았다,이 문제가 될 수 있을까?
나는 MSSQL 서버 2005
안으로 변환하지 않을 수 있습니까? @NoDisplayName 쿼리가 다른 계획을 생성 할 수 있으므로 쿼리보다 훨씬 좋습니다. 실행 계획이있는 부하 테이블의 스키마를 공유 할 수 있습니까 –