我正在使用PHP Web服务,我在其中执行了一个简单的SELECT查询并将其存储
$result = run_query($get_query);
我现在需要根据不同的参数对数据进行进一步的查询,我知道这可以通过MySQL的形式进行:
SELECT *
FROM (SELECT *
FROM customers
WHERE CompanyName > 'g')
WHERE ContactName < 'g'
我知道这会在表上执行两个Select查询。但是,我想知道的是,如果我可以简单地在第二部分的FROM部分中使用我以前保存的查询,例如,如果我认为它通过不再查询整个数据库来帮助执行是真的:< / p>
SELECT *
FROM ($result)
WHERE ContactName < 'g'
答案 0 :(得分:1)
您可以创建临时表以放置初始结果,然后使用它来选择数据和第二个查询。只有当您的第一个查询很慢时,这才会更快。
答案 1 :(得分:1)
PHP和SQL是不同的语言和非常不同的平台。它们通常甚至不在同一台计算机上运行。您的PHP变量根本不会与MySQL服务器进行交互。您使用PHP来创建恰好包含SQL代码的字符串,但这就是全部。最后,唯一重要的是您发送到服务器的SQL代码 - 您设置生成它的方式无关紧要。
此外,除非您获得解释计划,否则您无法真正说明MySQL将如何运行查询:
EXPLAIN EXTENDED
SELECT *
FROM (SELECT *
FROM customers
WHERE CompanyName > 'g')
WHERE ContactName < 'g'
...但我怀疑它会为你的查询读两次表。内存比磁盘快得多。
答案 2 :(得分:1)
感谢大家的回复。事实证明我所寻找的是“查询查询”,PHP不直接支持但我在这里找到了一个提供功能的函数:http://www.tom-muck.com/blog/index.cfm?newsid=37
这是从其他SO问题中找到的:Can php query the results from a previous query?
我仍然需要进行比较以确定它是否能提高速度。
答案 3 :(得分:0)
如果我正确理解你的问题,你想知道在php变量中保存SQL查询的“from”部分是否会提高你查询SQL服务器的性能,那么答案是否定的。只是因为保留值的变量被插入到查询中。
在PHP中是否获得了性能,答案最可能是肯定的;但取决于变量值的长度(以及重复使用变量而不是构建新的完整查询的频率),性能是否值得注意。
答案 4 :(得分:0)
为什么不在这样的单个查询中获取此数据?
SELECT *
FROM customers
WHERE CompanyName > 'g'
AND ContactName < 'g'