首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何像在蜂巢中一样为每个id划分MySQL表

问如何像在蜂巢中一样为每个id划分MySQL表
EN

Stack Overflow用户
提问于 2021-10-18 10:00:47
回答 3查看 214关注 0票数 1

在我们针对每个查询的应用程序中,我们构建一个唯一的查询id,并根据这个查询id插入到表中。我们过去经常用蜂巢来做这个,这很容易;

代码语言:javascript
复制
create table hivetable (
...
)PARTITIONED BY ( query_id INT ) ...

插到桌子上是这样的:

代码语言:javascript
复制
alter table hivetable add partition (query_id=?);
insert into hivetable  partition(query_id=?) select ...;

现在我们正在迁移到MySQL,我很困惑。我试着在下面的桌子下面插入如下:

代码语言:javascript
复制
create table mytable (...)  PARTITION BY HASH(query_id);

insert into mysql values(?,?,...,<query_id>);

很明显,它并没有以我想要的方式起作用。它将所有query_ids的数据插入到一个分区中。所以我非常感谢你的帮助

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-11-26 08:06:33

最后,索引对我来说效果很好。我们想要使用smth类似的蜂巢分区,因为加快了选择,删除操作。我发现MySQL中的索引非常符合我们的需求。如果对使用where语句的列进行索引,它将很好地加快查询速度。您可以在以下链接中找到更多信息:https://dev.mysql.com/doc/refman/8.0/en/create-index.html

票数 1
EN

Stack Overflow用户

发布于 2021-10-18 13:39:31

以下是关于如何使用Mysql分区的文档。下面是一个使用散列的示例。

WARNING如果不包括分区子句,则分区数默认为1。

代码语言:javascript
复制
    CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT,
    store_id INT
)
PARTITION BY HASH(store_id)
PARTITIONS 4;
票数 0
EN

Stack Overflow用户

发布于 2021-10-20 00:18:07

不要将MySQL的PARTITIONing用于此任务。只需拥有唯一的query_id就是PRIMARY KEY。然后是INSERT tbl、UPDATE tbl或SELECT ... FROM tbl,视情况而定。

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

https://stackoverflow.com/questions/69614152

复制
相关文章

相似问题

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