mysql查询如何基于信息模式工作
我试图在上解决一个MySQL查询,需要绘制以下模式:mysql查询如何基于信息模式工作,mysql,select,information-schema,Mysql,Select,Information Schema,我试图在上解决一个MySQL查询,需要绘制以下模式: * * * * * * * * * * * * * * * 在讨论中,我发现了下面的mysql查询,它从information\u schema中获取数据,以绘制所需的模式,这是我无法理解的 SELECT REPEAT('* ', @NUMBER := @NUMBER - 1) FROM information_schema.tables, (SELECT @NUMBER:=6) t LIMIT 5 任何人都可以解释一下这个查询的
* * * * *
* * * *
* * *
* *
*
在讨论中,我发现了下面的mysql查询,它从information\u schema
中获取数据,以绘制所需的模式,这是我无法理解的
SELECT REPEAT('* ', @NUMBER := @NUMBER - 1) FROM information_schema.tables, (SELECT @NUMBER:=6) t LIMIT 5
任何人都可以解释一下这个查询的流程,它到底是如何工作的吗?它的工作方式是info schema点表中可能有数百行供您使用 你可以核实一下。它只需要一个超过5行的源代码。它可能是任何东西
它进行交叉连接,将变量(
@NUMBER
)初始化为数字6。它从5个asteriks开始返回重复,每次减少1个,限制为5行。它只是使用一个表,该表应该有足够的行用于迭代。“如果你不习惯这种事情,那就太晦涩了。”戈登林诺夫:谢谢你的回答。我理解,这是使用表来获得足够的行。但您能否解释一下,它是如何确保从信息模式中获取表的,关于哪一个不确定是否有足够的行。如果你能再详细一点,你会很好的。我个人认为,列
将是一个更好的选择。这些条目是否来自临时信息表模式?我找不到足够的参考,无法在这些表中插入条目。我还尝试在本地设置中执行此查询,共获得283条记录。但是这些记录是从哪里产生的呢?你能解释一下吗?在专业信息模式数据库中大约有3打表。当结构和关系以及它们所持有的所有其他内容发生变化时,它们由服务器自动维护。星号查询中有两个表。第一个表有283行(我的表有311行左右)。第二个表是一个具有1行1列的派生表。是6号。因此,对于您来说,如果未附加限制5
,您有可能运行283次。您需要记住,这只是MxN的笛卡尔积,其中M=283,N=1。但是限制5将其减少为5。这个问题基本上与仅用作开始生成星号的虚拟输入无关。有人可能还应该提到,如果DBA注意,利用信息\u schema.tables
来达到这种不名誉的目的,将使您的数据库特权被立即撤销。就服务器资源而言,信息模式中的表
表的查询成本特别高。。。也许是资源最密集的一个。这些“表”不是“真实”表——它们是通过SQL接口公开内部服务器数据结构的模拟表。孩子们,不要在家里尝试。是的,这可能是一个非常鲁莽的尝试,以保证有东西可以打击。很好的观点@michaelsqlbot