Mysql 如何在mariadb10上设置每个表大小的最大索引?

Mysql 如何在mariadb10上设置每个表大小的最大索引?,mysql,mariadb,Mysql,Mariadb,我在Macosx上将mariadb10.0.3与brew一起使用 我的一个表有40个布尔列,我想在这些列上添加索引。但是,我在创建索引ddl时出错。错误信息如下 错误1070(42000):指定的关键部件太多;最多允许32个零件 如何增加最大索引数?索引数的限制是针对每个存储引擎设置的,不能在常规使用中更改。编译时有一个--with max index参数 但您确实需要查看表和索引结构。有40个布尔字段索引不太可能有任何帮助 不幸的是,MySQL有一些任意的编译时间限制。关键零件的默认限制为16

我在Macosx上将mariadb10.0.3与brew一起使用

我的一个表有40个布尔列,我想在这些列上添加索引。但是,我在创建索引ddl时出错。错误信息如下

错误1070(42000):指定的关键部件太多;最多允许32个零件


如何增加最大索引数?

索引数的限制是针对每个存储引擎设置的,不能在常规使用中更改。编译时有一个--with max index参数


但您确实需要查看表和索引结构。有40个布尔字段索引不太可能有任何帮助

不幸的是,MySQL有一些任意的编译时间限制。关键零件的默认限制为16。大多数RDBMS允许您在启动时设置这种限制,而不是在编译时。在MySQL中处理雪花是相当困难的

不幸的是,向
/configure
添加
--with max index
,并不能像许多人建议的那样起到作用:

./configure --prefix=/usr/local/mysql --with-max-indexes=N
上面这条线是无害的

最大索引与外键相关,但较小的索引来自
Max\u REF\u PARTS
Max\u index

似乎有效的方法是将sql/sql常量h上的
MAX\u REF\u PARTS
从16U更改为42U:

$ grep -R MAX_REF_PARTS ${MYSQL_SOURCE_FOLDER}
$ ./sql/sql_const.h:#define MAX_REF_PARTS 42U           /* Max parts used as ref */

众所周知,42是一个更好的任意限制,因为它是最终问题的答案:p(这是一个任意限制的笑话)。

请向我们展示用于创建索引的表结构和SQL。--with max index似乎不起作用,至少在5.6.x之后