php - 사용자 잔액과 매출액의 차이를 보다 효율적으로 찾는 방법은 무엇입니까?
我想大声告诉你
我想大声告诉你 2017-05-16 13:12:08
0
1
572

user 테이블의 Money는 사용자의 잔액이고 스트림 테이블의 s_money는 사용자가 생성한 흐름입니다. 이론적으로 SUM(s_money) == 돈, 오류가 발생했다고 가정하면 테이블에서 다른 데이터를 찾는 방법은 무엇입니까? 아래 그림과 같이 ID=3인 사용자입니다.

보충: 사용자 테이블의 정보와 사용자의 총 이직률을 찾아야 합니다.

다음과 같이

<테이블> <머리> 아이디 이름 돈 SUM(s_money) <본문> 3 z 150 100 <시간>

사용자 테이블과 스트림 테이블을 별도로 쿼리하고 array_diff_assoc을 통해 설정된 차이점을 찾아보세요. 그러나 효율성은 상대적으로 낮습니다.

측정된 사용자 테이블에는 23,434개의 데이터가 있고 스트림 테이블에는 361,024개의 데이터가 있으며 총 3.5초~4초가 소요됩니다. 더 효율적인 방법이 있나요?

<시간>

사용자 테이블:

<테이블> <머리> 아이디 이름 돈 <몸> 1 엘 50 2 여 100 3 Z 150

스트림 테이블:

<테이블> <머리> 아이디 사용자ID s_money <몸> 1 1 -50 2 1 100 3 2 -10 4 2 110 5 3 -10 6 3 110 <시간>

현재 userID가 인덱싱되어 있으며, 실제 쿼리 시간은 0.3초 이내입니다.
온라인 환경은 테스트를 거치지 않아 사용이 가능한지는 모르겠습니다

我想大声告诉你
我想大声告诉你

모든 응답(1)
黄舟

select t1.id,t1.name,t1.money,t2.s_money from user t1,(select userID,sum(s_money) s_money from stream group by userID) t2 where t1.id=t2.userid;
Union 인덱싱 효과가 더 좋아집니다. 스트림(user_id,s_money)에 INX_stream_us 인덱스를 생성합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿