我用的是Macosx上的mariadb10.0.3和brew。
我的一个表有40个布尔列,我想在这些列上添加索引。但是,在create上有一个错误。错误信息在下面。
错误1070 (42000):指定的关键部件太多,最多允许32件
如何增加最大索引?
发布于 2013-08-12 09:36:59
对索引数量的限制是每个存储引擎设置的,不能在常规使用中更改。编译时有一个-具有最大索引的参数。
但是你真的需要看看你的表和索引结构。拥有40个布尔字段索引在任何方面都是不可能的。
发布于 2015-02-24 16:34:58
不幸的是,MySQL有一些任意的编译时间限制。关键部件的默认限制是16。大多数RDBMS允许您在启动时设置这种限制,而不是编译时。在MySQL中处理雪花是相当困难的。
不幸的是,将--with-max-indexes添加到./configure并不能像周围许多人所建议的那样发挥作用:
./configure --prefix=/usr/local/mysql --with-max-indexes=N以上这条线是无害的。
Max索引与外键相关,但来自MAX_REF_PARTS和MAX_INDEXES的索引较小。
看起来有效的是将sql/sql_con.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 (这是一个带有任意限制的笑话)。
https://stackoverflow.com/questions/18174796
复制相似问题