2014-12-05 3 views
-6
$remainingQuery = "select * from $value s 
where not exists (
    select userID from userLocations ul 
    where ul.userID = s.userID 
    ) AND (userIP > '') GROUP BY userIP LIMIT 1"; 
$remainingResults = mysql_query($remainingQuery) or die(mysql_error()); 

위 코드는 실제로 느리게 실행됩니다. 왜 그런지 아는 사람?MySql 성능이 실제로 느립니다.

다음은 userLocations 테이블에 대한 정보입니다.

enum('ipv4', 'ipv6') latin1_swedish_ci 
ip_start varbinary(16) 
ip_end varbinary(16) 
country char(2) 
stateprov varchar(80) 
city varchar(80) 

다음은 쿼리와

name varchar(20) 
score bigint(20) 
log longtext 
difficulty int(10) 
games int(11) 
checkSum text 
bought tinyint(1) 
time timestamp 
bundle int(11) 
userID text 
userIP text 
city text 
country text 
+0

더 많은 정보가 추가되었습니다. 더 필요한 것이 있습니까? – Runar

+0

얼마나 느린가 * 정말 느린가 *? – AdamMc331

+0

10 초 정도, 일반적으로 페이지를로드하고 페이지를 표시하는 데 걸린 시간은 0.5 초입니다. 주로 내 서버가 저속으로 연결되어 있기 때문입니다. – Runar

답변

0

내가 몇 가지를 볼 $ 값으로 명명 된 테이블 중 하나입니다. 먼저 userIP별로 그룹화하고 1 씩 제한합니다. 그러면 하나의 userIP 만 반환됩니다. 실제로 원하는 것입니까? 반환되는 userIP를 어떻게 알 수 있습니까?

아마도 NOT IN을 사용하면 가지고있는 것보다 더 빠를 것입니까?

SELECT * 
FROM table s 
WHERE s.userID NOT IN (SELECT userId FROM userLocations) AND (userIP > '') 
GROUP BY userIP 
LIMIT 1; 
+0

여전히 느립니다. 나는 그것이 무엇을 일으키는 지 모른다. – Runar

+0

나는 생각했다, 나는 단지 내가 총을 잡을 것이다라고 생각했다. 나는 아마도이 답변을 제거 할 것입니다. 아마도 다른 일이있을 수 있습니다. – AdamMc331

관련 문제