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