SELECT yt.* FROM your_table yt
WHERE created_at='???????';
SELECT yt.* FROM your_table yt
WHERE created_at='???????'
AND updated_at='???????';
SELECT yt.* FROM your_table yt
WHERE created_at='???????'
AND (updated_at='???????'
OR updated_at='???????');
SELECT yt.* FROM your_table yt
WHERE created_at='???????'
AND updated_at >='???????'
AND updated_at < '???????';
并且不会用于以下查询:
SELECT yt.* FROM your_table yt
WHERE updated_at='???????';
SELECT yt.* FROM your_table yt
WHERE created_at='???????'
OR updated_at='???????';
参考、多列索引
这取决于使用的查询。
例如,索引
date_indx (created_at, updated_at)
将用于以下查询:并且不会用于以下查询:
创建索引的最佳实践是从查询开始。也就是说,在此之前您不能在构建索引方面做得“好”。
在索引中放置多个列以用于以下情况
=
IS NULL
IN
-tested 列(如果有的话)>
,BETWEEN
,LIKE 'foo%'
等)(如果有)在一个索引中进行两个范围测试 [大部分] 是没有用的——第一个可能会被使用;其余的被忽略了。
在某些情况下,优化器更愿意忽略 the
WHERE
并选择GROUP BY
and/orORDER BY
。可以有多个索引——但 [通常] 每个
SELECT
. 注意:子查询、派生表和联合查询都是单独优化的。更多:索引食谱
这取决于您的应用程序和您的查询。一般而言,如果您在 Where 子句中同时使用 Created_At 和 Updated_At 进行相同的查询,请继续使用选项 2。如果有单独的查询分别使用两者,请创建单独的索引。