Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Where子句的Mysql排名会更快吗?_Php_Mysql - Fatal编程技术网

Php 使用Where子句的Mysql排名会更快吗?

Php 使用Where子句的Mysql排名会更快吗?,php,mysql,Php,Mysql,我有一个8.000.000行的数据库,有两列“id”和“score”,我还知道score=0的用户的确切数量(接近4.000.000) 我的网页上有一个排名板,上面有以下查询: "SELECT id, score FROM table ORDER BY score DESC LIMIT ".$num_rank.", 25" $num_rank定义显示哪个页面,每页25个用户 查询工作正常,它显示了它必须显示的内容,但问题是查询速度非常慢 问题是下一个查询可能会更快 $num_users_sco

我有一个8.000.000行的数据库,有两列“id”和“score”,我还知道score=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"**  
}
所有的建议都很感激


谢谢

是的,您的查询速度会更快,对第一个查询有一个改进:“order by”是不必要的:

query="SELECT id, score FROM table WHERE score = 0 LIMIT ".$num_rank.", 25"
此外,在
表(score,id)
上添加索引会更快。事实上,有了这个索引,您就可以使用原始查询了