有效地排序大的mysql表

时间:2011-11-19 11:10:34

标签: php mysql database

说,我有一张包含1-2百万条记录的表格。我有API来排序结果数组并检索前25行。基本上,它是一个记分牌表,所以一次可能有很多请求。 我的问题是如何优化客户端 - 服务器数据流? 例如,如何:   1.排序表本身,而不是结果数组,只检索前25个结果?   2.加快请求? 我的示例代码如下。

mysql_connect(HOST, MYSQL_USER, MYSQL_PASS);

mysql_select_db(DATABASE);
$sql = mysql_query("select pin,country,nickname,score from scoreboard order by score desc limit 0, 25");

 while($row = mysql_fetch_assoc($sql)) $output[] = $row;
 $resulting_array['players'] = $output;
 print(json_encode($resulting_array));
 mysql_close();

1 个答案:

答案 0 :(得分:3)

  1. 在列score
  2. 上构建索引
  3. 将结果缓存到存储(如内存缓存,磁盘缓存等)以供后续访问
  4. 在分数更新后写一个钩子来清除/过期缓存