2014-07-16 24 views
1

我有一個有8.000.000行的數據庫,有2列'id'和'score',我也知道score = 0(即接近4.000.000)的用戶的確切數量。Mysql與Where子句的排名會更快嗎?

我有一個排名板我的網頁與查詢:

"SELECT id, score FROM table ORDER BY score DESC LIMIT ".$num_rank.", 25" 

$num_rank定義哪些頁面顯示,這是每頁25個用戶。

該查詢的工作原理,它顯示它必須顯示,但問題是查詢是非常慢。

的問題是,下一個查詢可能會更快?:

$num_users_score_0 = 400

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"** 
} 

所有的建議都appreciatted!

謝謝!

回答

2

是的,你的查詢會更快,有一個改進的第一:`ORDER BY是不必要的:

query="SELECT id, score FROM table WHERE score = 0 LIMIT ".$num_rank.", 25" 

而且,這將是更快的與table(score, id)的索引。實際上,通過這個索引,您可能可以使用原始查詢。

+0

非常感謝你! – etrull