在Mysql中搜索包含100多个表的数据库

在Mysql中搜索包含100多个表的数据库,mysql,sql,Mysql,Sql,我计划在一个包含100多个表的数据库上执行搜索。我合并所有表以加快搜索速度 SELECT `query`,url,keyword , body, title, pagerank, `precision`,Empire FROM jenniferaniston WHERE title LIKE '%$q%' OR body LIKE '%$q%' OR keyword LIKE '%$q%' OR `query`LIKE '%$q%' OR url LIKE '%$q%' UNION ALL

我计划在一个包含100多个表的数据库上执行搜索。我合并所有表以加快搜索速度

SELECT  `query`,url,keyword , body, title, pagerank, `precision`,Empire FROM  jenniferaniston
WHERE title LIKE '%$q%' OR
body LIKE '%$q%' OR
keyword LIKE '%$q%' OR
`query`LIKE '%$q%' OR
url LIKE '%$q%'
UNION ALL
我对所有一百张桌子都用同样的方法。有没有其他方法可以在MySQL中编写更短的代码?
因为我在Cpanel中遇到了错误,我认为这可能与SQL语句有关。

您可以使用information\u schema数据库获取表列表,并使用该列表进行查询


或者,您可以转储整个数据库并搜索文件

%
通配符开头和结尾的
表达式不能使用索引。您希望对100表数据库中的多个列执行此操作。根本没有办法让它快速:MySQL基本上需要读取整个数据库中的每一行

select 
subq.table_schema, subq.numberOfTables
from
(select 
    table_schema, count(table_name) as numberOfTables
from
    tables
group by table_schema) as subq
where
subq.numberOfTables > 100

我有些担心。如果
UNION ALL
是一个选项,则表示您的100个表共享相同的结构。此外,其中一个表名为
jenniferaniston
。这表明您的数据库设计是完全非规范化的,每次您从一个新参与者添加数据时,您可能正在创建一个新表,该表本质上是所有其他表的副本。趁现在还来得及把它修好!您应该有一个名为
actor
的主表,然后通过外键将其链接到包含信息的其他表。

您可以在信息架构数据库的帮助下找到

select 
subq.table_schema, subq.numberOfTables
from
(select 
    table_schema, count(table_name) as numberOfTables
from
    tables
group by table_schema) as subq
where
subq.numberOfTables > 100

为什么我总是要添加一条注释来询问错误消息?