繁体   English   中英

mysql 61表连接限制

[英]mysql 61 table join limit

前兆:也许我的数据库设计很烂。

我有一个系统,其中记录了一些有关元素的设置信息。 然后其他用户可以向这些元素添加详细信息。 我不知道这些细节的名字是多少,或者会有多少。 因此,我将它们存储在element_detail表中。 在某些情况下,我需要将这些行显示为列,即,在导出数据时,用户可以指定他们希望将哪些详细信息作为输出的一部分。 为此,我使用以下类型的查询:

select ed1.item_value as 'detail_1_name',ed2.item_value as 'detail_2_name' from element e 
left join element_detail ed1 on ed1.element_id=e.element_id and ed1.item_key='detail_1_name'
left join element_detail ed2 on ed2.element_id=e.element_id and ed2.item_key='detail_2_name' 

直到我开始在单个数据集中查看61个以上的细节之前,这一直很好。 此时,我得到了: CDbCommand failed to execute the SQL statement: SQLSTATE[HY000]: General error: 1116 Too many tables; MySQL can only use 61 tables in a join CDbCommand failed to execute the SQL statement: SQLSTATE[HY000]: General error: 1116 Too many tables; MySQL can only use 61 tables in a join

我该如何更改设计,以免无法获得此结果,最好不用做61个单独的查询并自己构建数据集。 我正在使用PHP / Yii作为开发环境。

达到了61个表的限制,请参阅https://dev.mysql.com/doc/refman/5.0/en/joins-limits.html

您可以创建一个大(临时)表,并通过多个查询对其进行更新。 最后,您可以阅读。 确保列名不要太长,因为还有一个限制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM