我不太確定何時只選擇一定數量的行比簡單地製作更具體的選擇語句更好。我有一種感覺,我錯過了一些非常簡單的事情,但我無法弄清楚。我對任何SQL的使用經驗都不到6個月,所以我很遺憾,所以我很抱歉,如果這是一個非常簡單的問題,但我找不到明確的答案。什麼時候使用SQL語句「SELECT [results] FROM [tables] WHERE [conditions] FETCH FIRST [n] ROWS ONLY」
2
A
回答
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
我們正在使用的語句,原因如下:
只顯示最相關的結果(比如前100),而不必所有行從數據庫傳輸到客戶端。在這種情況下,我們也使用ORDER BY。
我們只是想知道是否有匹配的行並有一些例子。在這種情況下,我們並沒有對結果進行排序,並且再次,FETCH FIRST比DB準備轉移大量行然後將其丟棄在客戶端上要便宜得多。這通常是在軟件開發過程中需要感覺某個SQL是否正確的時候。
0
SQL的設計者同意你的看法,這就是爲什麼標準SQL不包括頂部/極限/取第一等
0
認爲谷歌的搜索結果和頁面的數量通常存在於結果。
雖然很明顯,他們的情況還有很多,但這就是主意。
0
除了分頁,你想從一個表中的最高或最低[此處插入指標]行,下令對[任何指標]和限制1行中的任何時間,IME,不如做一個子查詢使用最小/最大。可能因發動機而異。
相關問題
- 1. 爲什麼FETCH FIRST N ROWS不能與WITH語句結合使用?
- 2. Select query fetch first row only
- 3. 獲取意外結果:ORDER BY [ColumnName] ASC OFFSET 0 ROWS FETCH FIRST 1 ROWS ONLY
- 4. SQL查詢,什麼是'SELECT * FROM .tables WHERE ID =`
- 5. 複雜DISTINCT,ORDER BY,WHERE SQL SELECT語句
- 6. sql select語句select sum where
- 7. Linq select results with duplicating rows
- 8. Select Statement with distinct returns multiple rows and need only first result
- 9. SQL Server - select into from語句?
- 10. SQL select select rows rows without duplicates
- 11. Select statement with multiple rows/same column - WHERE has multiple variables and FROM FROM same table
- 12. 學習SELECT FROM WHERE準備語句
- 13. SQL Select Top n percent rows
- 14. SQL - Where Select by Select Select語句?
- 15. sql insert into,select,where語句
- 16. SQL WHERE SELECT語句中
- 17. vb2010 oledb select where select results
- 18. 爲什麼sql select語句失敗?
- 19. Java SQL Select語句在WHERE子句中使用多個變量
- 20. where子句中的select語句sql
- 21. SQL select語句在where子句中
- 22. 性能問題(OFFSET n行FETCH NEXT M行ONLY)
- 23. 如何在實體框架5中使用SQL Server OFFSET&FETCH FIRST?
- 24. SQL語句的問題INERT INTO SELECT FROM WHERE
- 25. SQL Where Where Only
- 26. 語法就像「select field1,field2,field3 from A where(a,b)in(select a,b from B)」,在derby jdbc中支持?
- 27. 使用SELECT * FROM col WHERE
- 28. FROM內部的SQL SELECT語句,INNER JOIN
- 29. SELECT WHERE CASE語句
- 30. 在SQL語句中使用WHERE 1 = 1的目的是什麼?