我得到兩個表我需要一行包含table1的所有列和table2的只有1列。我通過使用rand()limit 0,1的順序來獲得行;我只希望我的表格有一行。是否更好做一個JOIN或只做兩個選擇呼叫
我想知道是否更有效地選擇table1的所有列,然後再次調用從表2中獲得額外的列。因爲我只需要一條記錄,我擔心它會在後臺做額外的工作來加入當我只需要一行的時候。
我還是本地開發和電腦速度快,所以我不能告訴區別,但是當它進入現場會有每秒多少呼叫付費服務器,因此資源是寶貴的
我得到兩個表我需要一行包含table1的所有列和table2的只有1列。我通過使用rand()limit 0,1的順序來獲得行;我只希望我的表格有一行。是否更好做一個JOIN或只做兩個選擇呼叫
我想知道是否更有效地選擇table1的所有列,然後再次調用從表2中獲得額外的列。因爲我只需要一條記錄,我擔心它會在後臺做額外的工作來加入當我只需要一行的時候。
我還是本地開發和電腦速度快,所以我不能告訴區別,但是當它進入現場會有每秒多少呼叫付費服務器,因此資源是寶貴的
沒有效率按rand限制0,1;它不會很好地擴展。這是一個設計缺陷。如果你堅持這樣做,那麼你肯定不會想要做一個連接,因爲這將遍歷表中的每一行。至少,你應該選擇行的一個小樣本拉從一個隨機:
$row=SELECT table_rows*rand() FROM INFORMATION_SCHEMA.TABLES WHERE foo and bar
SELECT * FROM foobar LIMIT $row, 1
在sql中是這個查詢嗎? table_rows * RAND()?我不明白這個查詢,你可以p [只寫在sql中,或解釋更多 – code511788465541441 2014-10-28 13:12:40
它的僞代碼。獲取表格中的行數,然後隨機選取一行,然後查詢該特定行。嘗試使用1毫米行的數據集來查看性能差異。 – winmutt 2014-10-28 13:50:41
關係型數據庫是非常好的,在加入,特別是如果你已經設置了表之間的外鍵關係。做一個簡單的內部連接是你最擔心的地方。 – Paul 2014-10-28 13:04:28