【问题标题】:MySQL: Select statement and selectively retrieve dataMySQL:选择语句并有选择地检索数据
【发布时间】:2012-05-08 08:46:38
【问题描述】:

我在 MySQL 中有一个大型数据集,我想在读取数据时加快 select 语句。假设有 1000 条记录,我想发出一个 select 语句,例如检索其中的一半,但基于时间戳。

使用这样的东西是行不通的,而 id 没有与时间戳紧密耦合

select * from table where table.id mod 5 = 0;

检索所有数据然后选择所需的数据不是解决方案,而我想避免检索大型数据集。因此,我正在寻找能够在选择时区分记录的东西。

谢谢

【问题讨论】:

  • 需要在WHERE子句中的字段上添加索引

标签: mysql select timestamp


【解决方案1】:

如果你需要速度,那么试试这个

select * from table ORDER BY table.id DESC LIMIT 0,500;

select * from table ORDER BY table.id DESC LIMIT 500,500;

等等……

【讨论】:

  • 在获取所有数据(500 条记录)时,使用 LIMIT 子句不会加快进程。计划是建立一种机制,选择这些样本中的 20%,以便快速查看,如果需要,用户将能够获得全部 500 条记录(详细视图)。
  • 我举了一个限制的例子,因为你说你有很大的数据集。您可以使用 PHP(或您正在使用的任何其他编程语言)动态地进行限制。首先触发 select count(id) as id_count from table 然后将 id_count 保存在一个变量中。要获取 20% 的记录,您可以执行 $id_count=$id_count*0.2;然后创建查询 select * from table ORDER BY table.id DESC LIMIT 0,500; 500 应替换为 $id_count 值。此外,如果您想将总行数限制为最大值(例如)100,那么您可以在准备查询之前编写以下代码 $id_count=min($id_count,100);
猜你喜欢
  • 2015-07-25
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多