MariaDB如何绕过InnoDB多列索引16的限制?

qqrboqgw  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(63)

我正在和一个客户一起工作,他在MariaDB 10.4的本地开发环境中设置了多列索引,不知何故,他没有得到1070错误,如果它超过16列,通常会出现。我所研究的一切都表明这是InnoDB的硬限制。MariaDB中是否有一些插件或设置允许这一点?
内容:Azure将在2025年取消他们的MariaDB dbaas,所以我需要弄清楚我们是否可以在MySQL8上使用当前的env来做一些事情,而不是切换到MariaDB。

rslzwgfq

rslzwgfq1#

从技术上讲,在13年前的5.5.20版本中,在MariaDB中,sql/sql_const. h将限制定义为32。在当时,这似乎是一个很容易的变化。MySQL的限制(同一文件)仍然是16。
如果你想在MariaDB中改变它,你可以改变这个常量并编译MariaDB代码。也许你可以说服Azure或MySQL提高这个限制。
很抱歉Azure强制对你进行功能降级。我真诚地希望MariaDB仍然是你的首选。
免责声明:MariaDB基金会员工

bqf10yzr

bqf10yzr2#

让我们看看依赖于如此大的复合索引的查询和表定义(SHOW CREATE TABLE),我认为索引的大小可能抵消了拥有如此多列的好处。
一种提高性能的技术是使用PK的聚类。一个典型的表如下所示:

PRIMARY KEY(id),
INDEX(foo)

字符串
如果许多重要的查询都有WHERE foo = ...,那么更改为

PRIMARY KEY(foo, id),
INDEX(id)   -- enough to keep AUTO_INCREMENT happy


我需要看看您的情况,讨论这可能是一个足够的性能改进,以证明有更短的索引。

相关问题