哪一個下面的方法更有效:多個小查詢與單個長查詢。哪一個更有效?
單再查詢:
"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