我试图加快PHP脚本的速度,目前正在Mysql域中推送一些PHP逻辑。如果第一个Select不返回行或计数为零,是否可以进行其他选择查询?
请记住,第一个查询需要首先运行,并且 仅 当第一个查询返回空集 时才 应激活第二个查询。
SELECT * FROM proxies WHERE (A='B') || SELECT * FROM proxies WHERE (A='C')
对于上面的2个查询,我有这段代码,但似乎每个查询运行两次(一次计数,一次返回)。有一个更好的方法吗?
IF (SELECT count(*) FROM proxies WHERE A='B')>0 THEN SELECT * FROM proxies WHERE A='B' ELSEIF (SELECT count(*) FROM proxies WHERE A='C')>0 THEN SELECT * FROM proxies WHERE A='C' END IF
一种选择是使用UNION ALL有EXISTS:
UNION ALL
EXISTS
SELECT * FROM proxies WHERE A='B' UNION ALL SELECT * FROM proxies WHERE A='C' AND NOT EXISTS ( SELECT 1 FROM proxies WHERE A='B' )
这将从存在的proxies表中返回行A='B'。但是,如果它们不存在,它将使用来查找那些行A='C'。
proxies
A='B'
A='C'