2014-10-28 48 views
0

我得到兩個表我需要一行包含table1的所有列和table2的只有1列。我通過使用rand()limit 0,1的順序來獲得行;我只希望我的表格有一行。是否更好做一個JOIN或只做兩個選擇呼叫

我想知道是否更有效地選擇table1的所有列,然後再次調用從表2中獲得額外的列。因爲我只需要一條記錄,我擔心它會在後臺做額外的工作來加入當我只需要一行的時候。

我還是本地開發和電腦速度快,所以我不能告訴區別,但是當它進入現場會有每秒多少呼叫付費服務器,因此資源是寶貴的

+0

關係型數據庫是非常好的,在加入,特別是如果你已經設置了表之間的外鍵關係。做一個簡單的內部連接是你最擔心的地方。 – Paul 2014-10-28 13:04:28

回答

0

沒有效率按rand限制0,1;它不會很好地擴展。這是一個設計缺陷。如果你堅持這樣做,那麼你肯定不會想要做一個連接,因爲這將遍歷表中的每一行。至少,你應該選擇行的一個小樣本拉從一個隨機:

$row=SELECT table_rows*rand() FROM INFORMATION_SCHEMA.TABLES WHERE foo and bar 
SELECT * FROM foobar LIMIT $row, 1 
+0

在sql中是這個查詢嗎? table_rows * RAND()?我不明白這個查詢,你可以p [只寫在sql中,或解釋更多 – code511788465541441 2014-10-28 13:12:40

+0

它的僞代碼。獲取表格中的行數,然後隨機選取一行,然後查詢該特定行。嘗試使用1毫米行的數據集來查看性能差異。 – winmutt 2014-10-28 13:50:41

相關問題