2008-12-30 62 views

回答

5

我知道兩種常見用途:

尋呼:一定要指定一個順序。如果沒有指定順序,許多數據庫實現使用任何便於執行查詢的方法。這種「最佳」排序行爲可能會給出非常不可預測的結果。

SELECT top 10 CustomerName 
FROM Customer 
WHERE CustomerID > 200 --start of page 
ORDER BY CustomerID 

子查詢:許多可以發佈子查詢的地方要求結果是單個值。在許多情況下,top 1只比max更快。

--give me some customer that ordered today 
SELECT CustomerName 
FROM Customer 
WHERE CustomerID = 
(
    SELECT top 1 CustomerID 
    FROM Orders 
    WHERE OrderDate = @Today 
) 
2

自定義分頁,通常。

0

當您想要將值顯示給用戶時,您只需要N行。通常,數據庫服務器可以獲取前N行,比獲取所有行更快,因此您的屏幕重繪可以更快一點。

Oracle甚至有一個名爲FIRST_ROWS的提示,表明獲取數據的速度更快,更重要的是將其全部恢復。

2

我們正在使用的語句,原因如下:

  1. 只顯示最相關的結果(比如前100),而不必所有行從數據庫傳輸到客戶端。在這種情況下,我們也使用ORDER BY。

  2. 我們只是想知道是否有匹配的行並有一些例子。在這種情況下,我們並沒有對結果進行排序,並且再次,FETCH FIRST比DB準備轉移大量行然後將其丟棄在客戶端上要便宜得多。這通常是在軟件開發過程中需要感覺某個SQL是否正確的時候。

0

SQL的設計者同意你的看法,這就是爲什麼標準SQL不包括頂部/極限/取第一等

0

認爲谷歌的搜索結果和頁面的數量通常存在於結果。

雖然很明顯,他們的情況還有很多,但這就是主意。

0

除了分頁,你想從一個表中的最高或最低[此處插入指標]行,下令對[任何指標]和限制1行中的任何時間,IME,不如做一個子查詢使用最小/最大。可能因發動機而異。

相關問題