SELECT product_id FROM inventories
INTERSECT
SELECT product_id FROM order_items;
SELECT product_id FROM inventories T1
inner join order_items t2 on T1.product_id = T2.product_id;
回答
我做了一些測試,出於好奇
摘要:
1.採用了索引,設置查詢稍微高效查詢時的成本和執行時間作爲參數
2.具有指標設置選項效率比加入基於查詢時,查詢成本,讀取次數,採取的執行時間爲參數
演示腳本:
drop table #test2
create table #test1
(
id int
)
create table #test2
(
id int
)
insert into #test1
select * from numbers
insert into #test2
select * from numbers where id>10
set statistics io on
create index nxc on #test1(id)
create index nxc2 on #test2(id)
select id from #test1
intersect
select id from #test2
select
* from
#test1 t1
join
#test2 t2
on t1.id=t2.id
執行兩個查詢了很多次:
使用索引
在數量方面查詢成本寫着:
表'#test2 ______________________________________________________________________________________________________ 000000000028'。掃描計數1,邏輯讀取2239,物理讀取0,預讀讀取0,lob邏輯讀取0,lob物理讀取0,lob預讀取讀數0. 表'#test1 ______________________________________________________________________________________________ 000000000027'。掃描計數1,邏輯讀取2239,物理讀取0,預讀0,lob邏輯讀取0,lob物理讀取0次,lob預讀0
問題2:使用聯接
Table'#test2 ______________________________________________________________________________________________________ 000000000028'。掃描計數5,邏輯讀取1609,物理讀取0,預讀讀取0,lob邏輯讀取0,lob物理讀取0,lob預讀取讀取0. 表'#test1 ______________________________________________________________________________________________________ 000000000027'。掃描計數5,邏輯讀取1610,物理讀取0,預讀讀取0,lob邏輯讀取0,lob物理讀取0,lob預讀讀取0.
更改連接查詢以使用maxdop 1併合並兩個查詢連接提示結果的讀取次數相同,但當並行執行兩個查詢時,使用set選項的查詢只佔總成本的3%。
注:
產生這種測試和執行計劃是基於幾個因素
- 1. SQL集合運算符
- 2. HashSet集合運算符是否基於GetHashCode()或Equals()工作?
- 3. 讓geoserver運行得更快
- 4. Mongoose是否執行$ isolated運算符
- 5. 轉換運算符快還是不快?
- 6. 哪個運算符更快(>或> =),(<或<=)?
- 7. 執行指數運算的最快算法是什麼?
- 8. 哪一個更快/更好strcasecmp()或等於運算符?
- 9. 使用`**`作爲運算符運算符快速運行,運算符'-`
- 10. 執行三元運算符
- 11. 位運算符比+和 - 運算符更快
- 12. LINQ是否使用嵌套循環,合併或HashSet連接加入運算符?
- 13. 定義一個運算符「距離」而不是運算符「in」與Python集合
- 14. 如何在SSIS中使用LIKE運算符(或等效運算符)執行合併
- 15. numpy廣播如何執行得更快?
- 16. 哪個SQL查詢執行得更快
- 17. 如何使PL/SQL執行得更快
- 18. 哪個getters和setter執行得更快?
- 19. 如何執行的XPath集合運算1.0
- 20. Mongo集合查詢和運算符
- 21. STL集合= =運算符的問題
- 22. nsarray使用鍵值集合運算符
- 23. 邏輯運算符或得到值
- 24. PHP如何更快地執行這些檢查/或更快地加載頁面?
- 25. 哪個更適合在angularjs控制器或視圖中執行邏輯運算?
- 26. 爲什麼加法運算比乘法運算更快?
- 27. MySQL查詢運行得更快
- 28. 如何讓PHPUnit + Selenium運行得更快?
- 29. 如何超載運算符<將物體放入集合
- 30. 如何使jQuery選擇器運行得更快或以塊的形式運行
稍有不同的結果取決於我的系統上如果重複。你有沒有比較執行計劃? – jarlh
在我的項目中我想執行查詢從數據庫中獲取數據。使用set操作符,子查詢或連接更快地查詢 – suhas
學習使用可用的工具!對未來非常瞭解! – jarlh