组合简单,近乎相同的选择语句

时间:2018-10-25 01:13:10

标签: php mysql sql select

我的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...

是否有更快/更有效的方式来做我想做的事情?例如。通过以某种方式将所有选择语句组合为一个语句?我觉得对我的数据库进行100条单个查询要比对一个大查询慢。虽然我不知道如何合并它们,请帮助我。

2 个答案:

答案 0 :(得分:0)

您可以使用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...

话虽如此,您可能需要重新考虑数据库设计。如果您总是一起查询这些表,也许所有数据都应添加到一个表中。

答案 1 :(得分:0)

您可以使用Merge Storage Engine创建一个合并所有这些表的虚拟表,然后查询该表。

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

然后您可以编写:

SELECT * FROM table1_100 WHERE user = 'query';