首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于varchar字段第一个字母的MySQL分区

基于varchar字段第一个字母的MySQL分区
EN

Stack Overflow用户
提问于 2019-08-23 05:02:48
回答 1查看 615关注 0票数 2

对于Postgres,我在Partitioning table based on first letter of a varchar field中有一个非常类似的问题,但是,我想在MySQL5.7中这样做。

是否可以根据varchar字段的第一个字符在MySQL中对表进行分区?

我有一张垂直的桌子,其格式如下:

代码语言:javascript
复制
CREATE TABLE `test` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `field_name` varchar(255) NOT NULL,
  `field_value` text NOT NULL,
  PRIMARY KEY (`id`)
)

这张表的大小是100多万条记录。

我们使用的大多数select查询都指定要搜索的field_name。我想要做的是根据field_name来划分表。

因此,当我们有像field_name='email'field_value='xyz@mail.com'这样的查询时,查询只需在包含所有电子邮件的分区中搜索,并跳过其余的分区。

field_name不是一个全面的列表,因此,我将无法使用列表分区。键分区也可能很难使用,因为我不想在分区中包括id,而键分区需要包含主键。

例如:

关于下列3项记录:

代码语言:javascript
复制
a-blah
a-blah2
b-blah

a-blaha-blah2将进入A分区,b-blah将进入B分区。

(2)如果MySQL无法实现上述情况,那么如何才能平均划分一个增长较大的垂直表?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-26 03:03:52

field_name='email‘和field_value='xyz@mail.com’

所以,真正的问题是EAV模式设计。它有很多的低效率,分区,特别是您建议的方式将无助于性能。

WordPress是EAV的一个常见示例,但是它可以通过改进索引:postmeta得到一些帮助。

更笼统地说:table

帮助EAV:http://mysql.rjweb.org/doc.php/eav的技术

只有4种情况下分区有助于性能;听起来不适合您的情况:http://mysql.rjweb.org/doc.php/partitionmaint

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

https://stackoverflow.com/questions/57620143

复制
相关文章

相似问题

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