繁体   English   中英

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

[英]Combining Simple, Near-Identical Select Statements

我的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条单个查询要比对一个大查询慢。 我不知道如何将它们结合起来,请帮助我。

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

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

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

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

然后,您可以编写:

SELECT * FROM table1_100 WHERE user = 'query';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM