2013-03-07 46 views
-3

我有一個有100-200k記錄的數據庫表,我需要優化它。例如,如果用戶想搜索術語汽車,他將獲得大約25k的結果。PHP + MySQL:如何獲取僅限數量的結果?

我想給他提供500個最新結果,但怎麼做?我知道我必須使用LIMIT,但我不確定如何「組合」最新的500行。

爲了進行更好的畫面如何,我從數據庫獲取現在的數據,這裏有一個小片斷:

$search = mysql_real_escape_string(searched_query($_GET['skill'])); 
$q = "...long sql query..."; 
echo $q; 
$result = mysql_query($q); 
$items = 30; // number of items per page. 
$all = $_GET['a']; 

$num_rows = mysql_num_rows($result); 
if($all == "all"){ 
    $items = $num_rows; 
} 
$nrpage_amount = $num_rows/$items; 
$page_amount = ceil($num_rows/$items); 
$page_amount = $page_amount-1; 
$page = mysql_real_escape_string($_GET['p']); 
if($page < "1"){ 
    $page = "0"; 
} 
$p_num = $items*$page; 
// Query that you would like to SHOW 
$result = mysql_query($q." ORDER BY published DESC LIMIT $p_num , $items"); 

預先感謝您!

回答

0

通過訂購published DESC您已經訂購了從最新到最舊的清單。所以如果你應用的limit爲500,它將自動只取最新的500行......

所以Mysql會先排序,然後再應用限制。

+0

但會工作,然後分頁? – user1946705 2013-03-07 09:32:35

+0

你試過了嗎? – 2013-03-07 09:35:08

+0

什麼是downvote? – 2013-03-07 09:39:02

-1

在查詢中使用ORDER BY。看看here更多細節

+0

這已經在那裏... – 2013-03-07 10:00:58

+0

@saratis:錯過了那部分。對不起,我的無知 – Roger 2013-03-07 10:04:23