1、执行子查询报错
例:
查询sql:select ID from biz_customer where id in( select id from biz_customer where CUSTOMER_NO='1160455829036001000' )
报错内容:
失败原因:ERROR 913 (HY000): Proxy ERROR:Join internal error: Incorrect key file for table 'ay/data/instance_24786_embedded_mysql_p9279/data/tk_core/T56.MYI'; try to repair it [18044c9c7984][913] [3a78d004-c4d7-1a56-82ee-18044c9c7984]
官方回复:
proxy临时表的索引长度超过3000的限制导致的,建议索引不要超过这个限制。
解决方案:
一、官方回答
这个查询用到了proxy的临时表,临时表用的MyISAM引擎的限制,如果查询没用到是不会有这个问题,这里建议的方案是:1.减少索引字段的数量或长度,比如用limit限制。2 优化一下查询
二、个人解决方案
使用TDSQL的透传 SQL功能,不通过proxy代理
说明文档:TDSQL MySQL版 透传 SQL - 开发指南 - 文档中心 - 腾讯云
但这样每个分片只统计自己分片上的数据,相当于把TDSQL当成了一个个独立的mysql去看待,这就需要保证所查询的数据不会跨分片。