实现一个排行榜显示当前我的排行名次,还有我前5名和我后5名;数据量几十万,用mysql,按表里一个score字段排序,怎么sql才没有效率问题?
데이터의 양은 수십만개입니다. mysql을 이용해 테이블의 점수 필드별로 정렬해 보세요... 매번 확인하고 뱉어내면 디스크 IO만으로도 충분하며, 고려할 필요도 없습니다. SQL 쿼리의 효율성. 콜드 데이터로는 성능 문제를 고려할 필요가 없는 것 같아요. 확인하기 위해 mysql을 사용하지 말고 redis를 사용하십시오. SortedSet을 사용하면 쉽게 수행할 수 있습니다.
이 경우 SQL 수준에서는 효율성 문제를 해결할 수 없습니다
데이터를 내보내고 프로그래밍 언어를 사용하여 빠른 정렬 알고리즘을 구현합니다. SQL이 다양한 정렬 알고리즘을 효율적으로 구현하고 이를 사용하는 것을 기대할 수는 없습니다.
이 주제는 흥미롭습니다. 그런데 질문이 충분합니까? 데이터의 양이 수십만개이기 때문에 점수로만 정렬하면 대부분의 사람들은 점수가 수백만 개에 달하더라도 상위 5개와 하위 5개는 모두 같은 점수를 가질 수 있습니다.
예를 들어 현재 Tencent의 게임은 모두 친구 그룹에서 순위가 매겨져 있습니다. 이는 또 다른 문제이며 매우 기술적입니다.
데이터의 양은 수십만개입니다. mysql을 이용해 테이블의 점수 필드별로 정렬해 보세요... 매번 확인하고 뱉어내면 디스크 IO만으로도 충분하며, 고려할 필요도 없습니다. SQL 쿼리의 효율성.
콜드 데이터로는 성능 문제를 고려할 필요가 없는 것 같아요. 확인하기 위해 mysql을 사용하지 말고 redis를 사용하십시오. SortedSet을 사용하면 쉽게 수행할 수 있습니다.
이 경우 SQL 수준에서는 효율성 문제를 해결할 수 없습니다
데이터를 내보내고 프로그래밍 언어를 사용하여 빠른 정렬 알고리즘을 구현합니다. SQL이 다양한 정렬 알고리즘을 효율적으로 구현하고 이를 사용하는 것을 기대할 수는 없습니다.
이 주제는 흥미롭습니다. 그런데 질문이 충분합니까? 데이터의 양이 수십만개이기 때문에 점수로만 정렬하면 대부분의 사람들은 점수가 수백만 개에 달하더라도 상위 5개와 하위 5개는 모두 같은 점수를 가질 수 있습니다.
예를 들어 현재 Tencent의 게임은 모두 친구 그룹에서 순위가 매겨져 있습니다. 이는 또 다른 문제이며 매우 기술적입니다.