组合简单、几乎相同的select语句

lmvvr0a8  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(321)

我的php页面接受的参数之一是用户搜索查询。然后,应用程序接受该查询并执行>100个单独的select语句,这些语句与以下内容完全相同:

SELECT * FROM table1 WHERE user = 'query';
SELECT * FROM table2 WHERE user = 'query';
SELECT * FROM table3 WHERE user = 'query';
SELECT * FROM table4 WHERE user = 'query';
...etc...

有没有一种更快/更有效的方法来做我想做的事情?e、 把所有的select语句组合成一个语句?我觉得有100个单独的查询进入我的数据库要比一个大查询慢。我不知道如何组合它们,请帮助我。

b09cbbtk

b09cbbtk1#

您可以使用合并存储引擎创建一个合并所有这些表的虚拟表,然后查询该表。

CREATE TABLE table1_100 (
    <column specifications>
) ENGINE=MERGE UNION=(table1, table2, table3, ...)

然后你可以写:

SELECT * FROM table1_100 WHERE user = 'query';
yv5phkfx

yv5phkfx2#

你可以用 union all 运算符来组合这些查询:

SELECT * FROM table1 WHERE user = 'query'
UNION ALL
SELECT * FROM table2 WHERE user = 'query'
UNION ALL
SELECT * FROM table3 WHERE user = 'query'
-- Etc...

也就是说,您可能需要重新考虑您的数据库设计。如果总是同时查询这些表,那么可能应该将所有数据添加到一个表中。

相关问题