我在Macosx上使用mariadb10.0.3和brew。
我的一个表有40个布尔列,我想在这些列上添加索引。但是,我在创建索引ddl时出错。错误消息如下。
ERROR 1070(42000):指定的关键部件太多;允许最多32件
如何增加MAX-INDEXES?
答案 0 :(得分:2)
每个存储引擎设置索引数限制,并且在常规使用中无法更改。编译时有--with-max-indexes参数。
但是你真的需要查看你的表和索引结构。将40个索引添加到布尔字段不太可能有任何帮助。
答案 1 :(得分:0)
不幸的是,MySQL有一些任意的编译时间限制。关键部件的默认限制是16.大多数RDBMS允许您在启动时设置此类限制,而不是编译时。在MySQL中使用雪花非常困难。
不幸的是,将--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(这是一个有任意限制的笑话)。