Mysql 同一列上的索引和分区
我们是否可以在日期列上进行分区,如: 按范围划分(到天(日期时间))( 并根据一天中的小时数在同一列上建立索引,如: 在选项卡名称(小时(日期时间))上创建索引名称 分区是必需的,这样以后的数据就可以通过简单地删除分区来轻松删除。 索引我们正试图加快基于date_time列的查询速度(因为一天内也会有数百万行) 这是正确的方法吗?它将如何运行?还有其他更好的方法吗?可能 分区非常适合清除旧数据,但对大多数查询没有好处。不太可能使用小时索引。让我们看看查询 典型的Mysql 同一列上的索引和分区,mysql,indexing,query-optimization,partition,Mysql,Indexing,Query Optimization,Partition,我们是否可以在日期列上进行分区,如: 按范围划分(到天(日期时间))( 并根据一天中的小时数在同一列上建立索引,如: 在选项卡名称(小时(日期时间))上创建索引名称 分区是必需的,这样以后的数据就可以通过简单地删除分区来轻松删除。 索引我们正试图加快基于date_time列的查询速度(因为一天内也会有数百万行) 这是正确的方法吗?它将如何运行?还有其他更好的方法吗?可能 分区非常适合清除旧数据,但对大多数查询没有好处。不太可能使用小时索引。让我们看看查询 典型的SELECT是什么?如果它在其他列
SELECT
是什么?如果它在其他列上进行过滤,则按小时索引是无用的。如果只按小时或任何datetime类型值进行过滤,则将datetime作为未分区表中的第一列是最理想的。(而分区
仅对清除“旧”数据有益。)
请注意,值为0..23的索引仅适用于指定介于0和23之间的值的查找。如果要查找特定日期中午某个时间的行,请执行以下操作:
WHERE dt >= '2020-01-02 12:00:00'
AND dt < '2020-01-02 12:00:00' + INTERVAL 1 HOUR
其中dt>='2020-01-02 12:00:00'
和dt<'2020-01-02 12:00:00'+间隔1小时
是最实用和有效的方法。这需要一个带有dt
的索引,而不是一个独立的小时索引
有关清除的更多信息: