我正在尝试加速PHP脚本,我目前在Mysql域中推送一些PHP逻辑.如果第一个Select没有返回任何行,或者计数为零,是否有办法生成不同的选择查询?
请记住,第一个查询需要先运行,第二个查询只有在第一个查询返回空集时才会被激活.
SELECT * FROM proxies WHERE (A='B') || SELECT * FROM proxies WHERE (A='C')
Run Code Online (Sandbox Code Playgroud)
对于上面的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
Run Code Online (Sandbox Code Playgroud) 根据Linux中的管道方法,第一个命令的输出应该被视为第二个命令的输入.因此,当我这样做时which cp | ls -l,应将其视为ls -l $(which cp)
但输出显示其他东西.
为什么这样 ?
我有两个数据库;一个在本地服务器中;
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
PL/SQL Release 11.1.0.7.0 - Production
"CORE 11.1.0.7.0 Production"
TNS for 64-bit Windows: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 - Production
Run Code Online (Sandbox Code Playgroud)
另一个是VM:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE 11.2.0.4.0 Production"
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
Run Code Online (Sandbox Code Playgroud)
这些服务器的其他所有内容都是相同的。我是两台服务器的DBA。所有表和存储过程都可以在两个数据库中正常工作,但是当Asp.net尝试连接到它时,一个存储过程无法正常工作。
当我运行连接到VM数据库的Asp.net应用程序时,出现以下错误,告诉我必须声明存储过程:
Message: Sys.WebForms.PageRequestManagerServerErrorException: ORA-06550: line 1, column 7:
PLS-00201: identifier 'GETINFO' must be declared …
我遇到了以下问题:我有一个超过1,000,000,000个数据的表.现在我运行以下查询(acc_no是主键):
select acc_no from user where acc_no between 753976276998100 and 78776276998199
Run Code Online (Sandbox Code Playgroud)
上述查询在不到一秒的时间内运行并获取了100,000条记录
但是如果我在同一个查询中再添加一列("service_no"),
select acc_no,service_no from user where acc_no between 753976276998100 and 78776276998199
Run Code Online (Sandbox Code Playgroud)
..这花了一分多钟.这是为什么?为什么第一个查询花了不到一秒钟,第二个查询花了不到一分钟?
仅供参考:service_no是一个NUMBER列