我需要在表格/ Rails模型中找到最近創建的記錄,並且我希望以有效的方式執行此操作。我的主鍵是UUID,因此使用Rails Samples.last
方法將不起作用。谷歌搜索這個,頂部的Rails答案使用sort ordered in descending order with a limit of 1。當然,這不是唯一的方法,當我幾年前學習數據庫時,我們經常用左外連接來做這種事情。查找最近的記錄:左外部聯接與排序降序
我在SQLServer中嘗試了兩種方法,但我對解釋並不熟悉,不知道哪個更好。我試過了:
SELECT TOP 1 * FROM samples ORDER BY created_at DESC;
這個解釋顯示了使用聚簇索引掃描的排序。
SELECT * FROM samples s1
LEFT OUTER JOIN samples s2 ON s1.created_at < s2.created_at
WHERE s2.user_id IS NULL;
該說明解釋了使用兩個聚集索引掃描的嵌套循環過濾器。
這些哪個更好,還是他們可比?還是有一種不同的方法我應該使用?排序版本對我來說似乎更加清晰,所以我傾向於選擇那個版本(我的團隊中的其他開發人員對SQL和數據庫的瞭解比我更少),但是這將用於大型表中,因此需要高效。
此外,如果它很重要,我用SQLServer爲此,但我也有MySQL數據庫,所以我希望如果可能的話數據庫不可知論的答案。
嘛TOP不是不可知 – Strawberry
我意識到這一點。在MySQL中,它顯然會使用限制來重寫。 – Maltiriel
這對我來說並不明顯;-) – Strawberry