如何在mariadb10上获得每个表大小的最大索引?

时间:2013-08-11 17:41:15

标签: mysql mariadb

我在Macosx上使用mariadb10.0.3和brew。

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

ERROR 1070(42000):指定的关键部件太多;允许最多32件

如何增加MAX-INDEXES?

2 个答案:

答案 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_PARTSMAX_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(这是一个有任意限制的笑话)。

相关问题