通过日期MYSQL更快的选择方式

时间:2014-02-04 16:31:23

标签: mysql

现在我正在使用:

MONTH(timestamp) = '7'AND YEAR(timestamp) = '2013'

要按日期选择,但我被告知这是一种非常低效的方法,特别是对于大量数据。什么是获得相同结果的更快方法?

感谢。

3 个答案:

答案 0 :(得分:2)

timestamp上创建索引,然后使用:

where timestamp >= '2013-07-01' and timestamp < '2013-08-01'

这将使用索引并表现良好。

您可以将索引创建为:

create index <your table name>_timestamp on <your table name>(timestamp);

答案 1 :(得分:1)

问题是它在每次比较时都应用了一个函数。您可以通过以下方式解决此问题:

  1. 不调用函数:

    where timestamp between date '2013-07-01' and date '2013-07-31'
    
  2. 另一种方式:创建功能指数:

    create index myIndex on myTable(MONTH(timestamp),YEAR(timestamp));
    
  3. 有关信息:Is it possible to have function-based index in MySQL?

答案 2 :(得分:0)

搜索日期范围,包括7/1,不包括8/1。

WHERE timestamp >= '2013-07-01' and timestamp < '2013-08-01'

Mysql有助于自动解析YYYY-MM-DD foramt中的日期。