我最近遇到了一个查询,该查询从过去几天开始花费了异常长的时间。上个月我们进行了 MySQL 数据库的服务器迁移,以前的服务器上从未出现过问题。旧服务器上的 MySQL 版本是 5.1.34,而当前版本是 5.1.58(不确定这是否与此问题有关)。
查询如下:
SELECT table_name,
partition_name,
subpartition_name,
partition_method,
subpartition_method,
partition_expression,
subpartition_expression,
partition_description,
partition_comment,
nodegroup,
tablespace_name
FROM information_schema.partitions
WHERE table_schema LIKE 'wialogdb'
AND NOT Isnull(partition_name)
AND table_name LIKE 'freemail'
ORDER BY table_name,
partition_name,
partition_ordinal_position,
subpartition_ordinal_position;
它是对 Navicat 触发的 information_schema.PARTITIONS 的查询,以获取有关表结构的详细信息,重现起来非常困难。
当你编辑表格时,Navicat 必须从 Information Schema 中收集关于表格的所有详细信息(例如引擎的 lsit、表格列,请参阅分析显示创建表格等),并且 PARTITIONS 是它必须检查的表格之一,如您所见WHERE 条件不是“正确的” WHERE TABLE_SCHEMA LIKE 'wialogdb' 它不应该是 LIKE 它应该是 WHERE TABLE_SCHEMA = 'wialogdb',这个查询要快得多,但它是 Navicat 的内部代码,我们无法更改它。我们过去没有这个问题(旧的 MySQL 5.1.34)
任何帮助将不胜感激。
提前致谢。