哪一个下面的方法更有效:多个小查询与单个长查询。哪一个更有效?
单再查询:
"SELECT COUNT(*) AS num FROM ( SELECT users.UID, cnumber FROM users JOIN identity ON users.UID = identity.UID WHERE 'abc' IN (google, facebook, twitter, linkedin) ) AS userfound JOIN jobs ON userfound.cnumber = jobs.cnumber WHERE JID = 24"; if(resultfromquery == 1) //Some code here else //Some code here
打破长查询分成多个单表查询:
uid = "SELECT UID FROM identity WHERE 'abc' IN (google, facebook, twitter, linkedin)"; cnumber_from_usertable = "SELECT cnumber FROM users WHERE UID = 'uid'"; cnumber_from_jobtable = "SELECT cnumber FROM jobs WHERE JID = 24"; if(cnumber_from_usertable == cnumber_from_jobtable) //Some code here else //Some code here
当你尝试时,你观察到了什么? – symcbean 2013-04-08 09:03:42
只是执行查询有一个明显的开销。因此,做小查询会多次发生这种开销。除非你的大型查询非常低效,否则它将比几个小型查询更有效率。用你的例子,这里的差别可能很小,但是它变得非常明显的地方是当你循环一个查询的结果并且为每个结果执行另一个查询时。 – Kickstart 2013-04-08 09:20:02
是的,确切地说。 DB实际上是空的。目前,两者之间几乎没有任何区别。所以,我想知道应该选择哪一个。 – 2013-04-08 09:28:04