如何优化在2个MySQL表中搜索值?

时间:2017-03-02 06:30:12

标签: php mysql

我需要确定用户提供的值是否存在于2个不同的MySQL表中,以及它存在于哪个表中。我知道我可以这样做:

SELECT 1 FROM table1 WHERE col_name_table1 = user_value;

如果用户值不存在,那么我可以查看下一个表:

SELECT 1 FROM table2 WHERE col_name_table2 = user_value;

在我执行上述SQL查询的PHP逻辑中,我可以根据查询返回的值(即0,1)轻松捕获用户值所在的表。

我想知道,是否有更优雅的方式来做我需要的事情? 是否可以编写一个检查两个表的查询,然后返回找到用户值的表?

2 个答案:

答案 0 :(得分:0)

也许UNION ALL会起作用?

(SELECT 1 FROM table1 WHERE col_name_table1 = user_value) UNION ALL (SELECT 2 FROM table2 WHERE col_name_table2 = user_value);

答案 1 :(得分:0)

使用UNION ALLCASE WHENSUB QUERIES可以在一个查询中运行两个查询,但这不是一种优化方式。通过php执行此操作,因为您知道if和else情况。如果从第一个表中得到结果,则几乎不需要.01秒,如果不是第一个表,那么在其他条件下将会多出0.01秒。但是,一旦你创建了一些UNION或SUB,它就会增加到 2.0到3.0