即使它存在性能問題,我是否可以知道相關子查詢的用法?使用相關子查詢
Q
使用相關子查詢
4
A
回答
4
那麼,首先它沒有性能問題。它就是這樣,並且考慮到硬件和數據庫結構的性能限制,它將盡可能地執行。
至於什麼是有用的,它只是一種表達特定邏輯條件的方式。
6
一個常見的用法例如:各部門的最新僱用的僱員(S)的顯示細節:
select e.deptno, e.empno, e.ename, e.hiredate, e.sal
from emp e
where e.hiredate = (select max(e2.hiredate)
from emp e2
where e2.deptno = e.deptno -- the correlation
);
+0
這是我在SO中看到的關於使用相關子查詢的最清楚的用法。 – dbustosp 2017-06-21 03:12:23
2
相關子查詢中使用的一些必須採取行動上依賴於一個在查詢中的每一行或來自該行的更多值。
所以,舉例來說,如果你想知道包括基於東西在另一個表中發生的結果集的行,你可以這樣做:
UPDATE YourTable YT SET YourColumn =
(SELECT SUM(SomeColumn) FROM SomeOtherTable SOT
WHERE SOT.ID = YT.ID AND SOT.SomeField <> YT.SomeField)
:
SELECT * FROM YourTable YT WHERE
EXISTS (SELECT * FROM SomeOtherTable SOT WHERE
SOT.ID = YT.ID AND SOT.SomeInteger BETWEEN YT.LowInteger AND YT.HighInteger)
在UPDATE
同樣
有時候這些查詢可以用標準的JOIN寫,但有時候不能。
相關問題
- 1. 使用相關子查詢
- 2. 相關子查詢
- 3. 相關子查詢
- 4. 使用ICriteria的NHibernate相關子查詢
- 5. 使用SQL的相關子查詢
- 6. 如何用非相關子查詢替換相關的子查詢?
- 7. PROC SQL子查詢/相關查詢
- 8. LINQ的相關子查詢
- 9. 相關的mysql子查詢
- 10. SQL - 相關子查詢
- 11. TSQL子查詢相關
- 12. 相關子查詢 - Codeacademy
- 13. MySQL相關子查詢FROM
- 14. SQL - 相關子查詢
- 15. 相關子查詢,oracle sql
- 16. MySQL相關子查詢
- 17. JPA @NamedQuery相關子查詢
- 18. mySQL相關子查詢
- 19. 相關子查詢的MySQL
- 20. SQL相關子查詢
- 21. 使用相關子查詢更新查詢
- 22. 如何使用大查詢複製相關子查詢
- 23. 在主要查詢中使用相關子查詢的值
- 24. 如何查詢使用相關子查詢的聚合值?
- 25. MySQL的:相關子查詢選擇類型關聯子查詢
- 26. 相關子查詢不起作用
- 27. SQLAlchemy:單向關係,相關子查詢
- 28. SQL腳本,有關相關子查詢
- 29. 相關子查詢SELECT子句
- 30. 相關子查詢如何通過外部子查詢「循環」?
爲什麼它不會有性能問題,因爲它首先在外部查詢中查找記錄,然後將其傳遞給內部查詢,然後內部查詢將根據再次外部查詢選擇預期結果而給出一些結果...... – hrishi 2009-11-25 10:57:33
@hrishi:因爲這不是它所做的。 SQL是聲明式的,所以你可以編寫你想要的結果,而不是通過操作來獲得結果。確定如何檢索結果是查詢優化器的一項工作。 – erikkallen 2009-11-25 11:06:33
你所描述的幾乎是一個加入。優化過程的查詢轉換階段可以將相關的子查詢轉換爲連接,並且可以實現爲散列連接或嵌套循環(等等)。對非常大的未索引表的相關子查詢可能是一個性能問題,但這是因爲連接效率低下,並不是因爲用SQL指定它的語法意味着數據庫操作本身不夠高效。 – 2009-11-25 11:06:37