2015-01-18 3 views
0

방금 ​​웹 사이트의 새 DB 설계를 완료했습니다. 새로운 데이터베이스에는 이름이 바뀌었지만 몇 개의 테이블이 추가되었고 그 안에 몇 개의 컬럼이 추가되었습니다. 이제 기존 DB의 내용 (10k + 행 포함)을 새 데이터베이스로 가져 와서 home.php 파일을 열면 무한한 시간이 소요되어 서버가 멈 춥니 다. 서버가로드되면 게시물이 표시되지 않습니다 (로드 중 유지) ! 나는 두 번 거기에 오류가 코드를 확인하고 데이터베이스가 Localhost에서 사용되는 모든 것이 잘 작동합니다.
home.php의 이전 데이터베이스 쿼리는 단 하나의 SELECT 문이었습니다. 하지만 지금 Home.php에서 3 루프 쿼리를 실행중인 ajax 요청이 있습니다.MYSQL 데이터베이스를 한 서버에서 새 서버로 가져옴

$net = "SELECT idpost FROM p_n_relation WHERE `idnetwork` IN (SELECT idnetwork FROM u_n_relation WHERE iduser = '$iduser' AND isActive = 1 AND isDeleted = 0) AND isActive = 1 AND isDeleted = 0"; 

검색어 :

SELECT * FROM emotions WHERE (randomid IN (".$net.") AND isActive = 1 
AND isDeleted = 0 AND onid = '0' AND type = 0)ORDER BY rating DESC 
LIMIT ".$cp.",".$n 

은이 쿼리가 너무 무거운되었고, 적은 데이터로 시간을내어하지만 10,000 +에 너무 많은 시간을 참가하는 것을 방지 할 수 있습니다.
u_n_ 관계에는 3k, p_n_relation에는 10k 및 감정 10k 행이 있습니다. 우리는 1GB RAM, 단일 코어 디지털 오션 서버를 사용하고 있습니다. PS - 모든 정적 페이지가로드됩니다.
A가 자신을 찾아 보게하십시오 : http://128.199.77.57
이름 : 손님
암호 :

+0

질문에 대답하기에 충분하지는 않습니다. 일반적으로 MySQL에서 subselect를 피하는 것이 좋습니다 - 하위 쿼리는 각 후보 행에 대해 실행되는 경향이 있습니다. 즉, 쿼리가 O (n^n) 작업처럼 보이기 시작합니다. 더 나쁜 것은, 당신은 subselect 안에 subselect가 있다는 것인데, 이는 O (n^(n^n))을 의미합니다! – PaulProgrammer

+0

XDebug를 사용하면 코드가 멈추는 위치를 정확히 알 수 있습니다. –

답변

0


두 테이블 구조를 비교 guestisepic. 특히 KEY가 올바른지 확인하십시오. 색인에있는 열의 이름을 변경 했습니까?

phpMyAdmin에서 두 테이블의 구조를 모두 내 보냅니다.

관련 문제