首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql按日期分区时按自动增量主键进行选择

Mysql按日期分区时按自动增量主键进行选择
EN

Stack Overflow用户
提问于 2020-08-19 12:41:05
回答 1查看 285关注 0票数 0

我在想,如果我按日期划分一个表,然后按主键进行一些选择或更新查询,mysql会怎么做呢?

它是要搜索所有分区还是查询优化器知道在哪个分区中保存行?

其他唯一的而不是唯一的索引列呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-19 17:45:01

背景

PARTITIONed表看作是几乎独立的表的集合,每个表都有自己的数据BTree和索引BTree。

所有UNIQUE键,包括PRIMARY KEY必须包括“分区键”。

如果分区键在查询中可用,查询将首先尝试执行“分区剪枝”,以限制实际查看的分区数。如果没有这些信息,它必须查看所有分区。

在“剪枝”之后,处理将转到每个可能的分区,并执行查询。

选择,更新

SELECT逻辑上执行在非剪枝分区中找到的任何内容的UNION ALL

UPDATE将其操作应用于每个未修剪的分区。除了性能之外,什么也不做的更新不会造成任何伤害。

舆论

在我的经验中,PARTITIONing经常会因为上面这样的事情而减慢速度。有少量用于分区的用例:http://mysql.rjweb.org/doc.php/partitionmaint

你的具体问题

按日期划分一个表,然后按主键进行一些选择或更新查询?

所有分区都会被触摸。SELECT将一个结果与N-1空结果组合在一起.UPDATE将执行一次更新,加上N-1对更新的无用尝试.

AUTO_INCREMENT列必须是某些索引中的第一列(不一定是PK,也不一定是单独的)。因此,在每个分区中使用id是非常有效的。但这意味着它的工作量是非分区表的N倍。(这是分区的性能拖放。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63487187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档