2010-06-25 8 views
0

비즈니스 권리. 내 사이트의 다른 부분에서 모든 종류의 활동을 가져 오는 활동 피드를 UNION 및 ORDER BY를 사용하여 모두 정렬 한 다음 상위 25 개를 가져온 다음 활동을 표시합니다.Mysql Activity Union 쿼리

우리 동료 프로그래머는 더 많은 행 (현재 800 개가 있음)이있을 때 문제가 발생할 것이라고 말합니다.

그래서 질문입니다. UNION이 나중에 회선 속도를 늦추 시나요? 만약 그렇다면 a) 활동을 새 테이블에 넣고 쿼리하십시오. b)보기를 시도해보십시오. - (그렇다면 누구나 내가 어떻게 그렇게 잘 모르는지 설명 할 수있다.) c) 기타 ...

당신의 도움에 감사드립니다. 리처드

답변

0

개개의 검색어 각각을 25 개로 제한하지 않는 이유는 무엇입니까? 당신이 최종 목록 UNION을 제한된되기 전에 돌아올 행의 양을 제한 할 수있는 방법은

+0

그래, 생각해 봤지만 다음 페이지에 있다면 문제가 생겼어. –

+0

노조를 정렬 할 때 이런 식으로 전체 그림을 얻을 수 없습니다. –

+0

이것은 좋은 생각입니다. 행을 적게 사용하면 mysql을 더 쉽게 만들 수 있지만 큰 로그를 원한다면 아래를보십시오. 리차드 –

0

이 변수의 많은에 따라 달라집니다로이 같은 테이블이 등이 얼마나 바쁜으로 까다로운 하나입니다

나는 union이 방법으로 사용하고, 나중에 느려지 게 상상

기본적으로 전체 테이블에서 통합 작업을 수행하므로 순서 지정 및 행 수 제한이 적용되기 전에 메모리로 읽어야합니다. 귀하의 질의 은 데이터 양이 증가함에 따라 더 느리게 나타납니다.

테이블의 모든 데이터가 중요하다면 최선을 다해 테이블을 인덱싱 할 수 있으므로 가능한 한 빨리 테이블을 인덱싱하십시오. 따라서 테이블의 데이터 중 일부가 오래되면 또는 낡은 당신은 너무 관심이 없다면, 당신은 임시 테이블에 필요한 행을 읽을 수있는 범위를 가질 수 있습니다. 그런 다음 주문할 수 있습니다.

+0

네, UNION이 문제를 늦출 수 있다고 생각했습니다. 나는 이것이 아마도 최근의 역사라면 가장 쉬운 해결책이 될 마지막 달처럼 제한적이라고 생각하기 시작했습니다. 의견을 보내 주셔서 감사합니다. –

+0

데이터가 적을수록 더 빠를 것입니다. 이전 데이터가 없어도 그렇게 할 수 있다면 퍼포먼스 POV에서부터 시작하는 것이 좋습니다. –

0

나는 가장 좋은 방법은이 때문에

A) 예 색인

의 조합을 할 수있을 것 같아요

b) 그런 다음 각 하위 쿼리에서 LIMIT 25를 수행합니다.

c) 올바른 날짜 순서 mmm을 갖도록 각각의 검색어에 대해 added_date> = 날짜를 입력합니다. 그런 다음 어떤 날짜로 이동해야하는지에 관한 문제를 나타냅니다. 그래서 우리가 날짜 x 페이지로 이동하면 얻을 수 있습니다.

이것은 큰 문제로 변하고 있습니다. 우리가 가지고있는 데이터의 크기는 아주 커질 것입니다.

도움 주셔서 감사합니다. 리처드

0

그냥 로그를 만들고 그렇게하는 것으로 결정했습니다. 언제나 도와 줘서 고마워. 리차드