当前位置:  开发笔记 > 后端 > 正文

查询MySQL information_schema数据库是查找相关表的好方法吗?

如何解决《查询MySQLinformation_schema数据库是查找相关表的好方法吗?》经验,为你挑选了0个好方法。

我有一个表,在许多其他表上由外键引用.在我的程序中,如果我想删除其中一行,我需要首先搜索依赖项并将它们呈现给用户 - "此对象依赖于表y中的x,表q中的z等".我还希望具有该表的外键的表的数量随着时间的推移而显着增长.

information_schema数据库是搜索所有依赖项的好方法吗?我试图查询它以检索所有具有我的表的外键的表的列表,然后迭代结果并从每个表中选择外键值与用户试图删除的值匹配的所有条目.我的查询如下:

SELECT * FROM `KEY_COLUMN_USAGE` kcu
LEFT JOIN TABLE_CONSTRAINTS tc
ON tc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME
WHERE tc.CONSTRAINT_TYPE='FOREIGN KEY'
AND (kcu.REFERENCED_TABLE_SCHEMA='db')
AND (kcu.REFERENCED_TABLE_NAME = 'testtable')

这对于确定我需要搜索的表格非常有效,但是它非常慢.查询最多需要大约1到2秒才能在我的开发机器上执行,当我在生产服务器上运行它时会减少很多,但仍然会很慢.

我需要知道以这种方式使用information_schema是不是一个坏主意.如果没有,我如何从查询中提取更好的性能.我使用的查询是否可靠或有更好的方法吗?如果是这样,我应该如何从可维护性的角度解决这个问题.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有