[英]How can I up max index per table size on mariadb10?
我在Macosx上使用mariadb10.0.3和brew。
我的一个表有40个布尔列,我想在这些列上添加索引。 但是,我在创建索引ddl时出错。 错误消息如下。
ERROR 1070(42000):指定的关键部件太多; 最多允许32件
如何增加MAX-INDEXES?
每个存储引擎设置索引数量的限制,并且在常规使用中无法更改。 编译时有--with-max-indexes参数。
但是你真的需要查看你的表和索引结构。 将40个索引添加到布尔字段不太可能有任何帮助。
不幸的是MySQL有一些任意的编译时间限制。 关键部件的默认限制是16.大多数RDBMS允许您在启动时设置此类限制,而不是编译时。 在MySQL中使用雪花非常困难。
不幸的是,在./configure
添加--with-max-indexes
将./configure
,因为很多人建议:
./configure --prefix=/usr/local/mysql --with-max-indexes=N
以上这条线是无害的。
最大索引与外键有关,但与MAX_REF_PARTS
和MAX_INDEXES
相关的索引较小。
似乎有效的是在sql / sql_const.h上将MAX_REF_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(这是一个有任意限制的笑话)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.