2012-06-20 45 views
0

我有以下SQL代码可以在小数据集上正常工作。我有一个朋友告诉我,我应该考虑把这个放在MySQL的FOR循环中,使用SELECT DISTINCT c.name作为循环条件。如何在mysql的for循环中使用select查询?

SELECT c.name, c.limit, c.price, c._low, c._high, c.date 
FROM comp c 
WHERE c.e_id IN 
(SELECT e_id FROM part_e WHERE core_id=23) 
OR c.pn IN 
(SELECT pn FROM part_ct WHERE core_id=23) 
GROUP BY c.name 
ORDER BY c.date DESC, c.name ASC 
LIMIT 0,200 

作为一名新的SQL程序员,我正在查找如何在MySQL中执行循环。虽然它在概念上看起来很简单,但我很难想出如何实际设计SQL语句来实现循环中的实际运行。

我的朋友告诉我,你应该使用循环的原因是在处理极大数据集或处理非常大的查询请求时,对SQL数据集使用'post'操作符可能会对性能产生负面影响。

这对我来说很有意义,所以我在寻求帮助理解如何做到这一点,以及更多关于为什么子查询被认为是不好的做法的信息。

感谢您的帮助!

回答

0

能否请你解释一下你的意思与“供”和“循环”

在SQL你得到了很多的数据与选择的字符串是什么,这个数据你在你的代码(PHP,C使用, java的......),而且你从线线奥德数据集中到数据集,直到它完成

性能比较提示:SQL Joins Vs SQL Subqueries (Performance)?

一个技巧:你应该c.e_id组(它的速度更快组由数字)

+0

By for循环,我的意思是利用MySQL处理大型数据库的能力在内部取消数据,而不是返回巨大的结果集。 (http://dev.mysql.com/doc/refman/5.0/en/loop-statement.html)此外,我必须按c.name进行分组,因为有些内容位于part_ct表中,而其他内容位于part_e表中,它们没有任何共同之处。 –