我有一个包含8.000.000行的数据库,有2列'id'和'得分',我也知道得分= 0的用户的确切数量(即接近4.000.000)。
我的网页上有一个排名板,其中包含查询:
"SELECT id, score FROM table ORDER BY score DESC LIMIT ".$num_rank.", 25"
$num_rank
定义了哪个页面显示,每页有25个用户。
查询有效,它显示了它必须显示的内容,但问题是查询真的很慢。
问题是下一个查询可能更快?:
$num_users_score_0 = 4000123
if(score==0){
$num_rank=$num_rank-$num_users_score_0
query=**"SELECT id, score FROM table WHERE score = 0 ORDER BY score DESC LIMIT ".$num_rank.", 25"**
}else{
query=**"SELECT id, score FROM table WHERE score > 0 ORDER BY score DESC LIMIT ".$num_rank.", 25"**
}
所有建议都很赞赏!
感谢!!!
答案 0 :(得分:2)
是的,你的查询会更快,第一次改进:`order by是不必要的:
query="SELECT id, score FROM table WHERE score = 0 LIMIT ".$num_rank.", 25"
此外,table(score, id)
上的索引会更快。实际上,使用此索引,您可以使用原始查询。