如果我有一個MS Access數據庫與來自兩個不同的數據庫服務器(從SQL Server數據庫中的一個表和一個Oracle數據庫中的一個表)連接表,並且我編寫一個查詢連接這兩個表,Access(或噴氣引擎,我猜?)處理這個查詢?它會在每個表上首先發出一些SELECT來獲取我正在加入的字段,找出哪些行匹配,然後爲這些行發出更多的SELECT?從不同服務器中的鏈接表加入時,MS Access的性能如何?
1
A
回答
2
關鍵的一點理解是這樣的:
你是在問一個問題,它發送其請求到兩個服務器數據庫之前訪問/噴氣可以優化?如果你加入了這兩個表的全部,Jet將不得不請求這兩個表,這將是醜陋的。
另一方面,如果您可以提供限制連接的一個或兩個方面的標準,則Access/Jet可以更高效並請求經過篩選的結果集而不是整個表。
2
這將是我的猜測。它有助於聯接兩側都有索引,但由於這兩個服務器都無法完全控制查詢,所以不可能進行進一步的查詢優化。
1
我沒有從兩個不同的數據系統連接表的實際經驗。但是,根據需求等等,您可能會發現運行SELECT查詢時只需使用Access表中所需的記錄和字段並在Access中執行最終連接和查詢就可以更快。
3
是的,你可以有一些嚴重的性能問題。多年來我一直這樣做。 Oracle,Sql和DB2 - 呃。有時候我不得不在早上5點設置定時器,所以當我在7點進入時已經完成了。
如果您的數據集足夠重要,在本地構建表然後鏈接數據通常會更快。對於遠程數據集,也要查看passthroughs。
例如,假設您要從Oracle數據庫中提取所有昨天的客戶,並從SQL數據庫中購買所有客戶。假設您每天平均有100個客戶,但是列表的數量是30,000,並且可以說您的產品有500,000個清單。您可以查詢oracle數據庫中的100個客戶列表,然後將其寫入IN
語句中,並將其傳遞給sql db。你幾乎可以立即得到你的數據。
或者,如果您的記錄集很大,請建立兩個ID的本地表,然後在本地比較它們,然後只需拉取必要的匹配項。
它很醜,但你可以從字面上節省自己的時間。
相關問題
- 1. MS Access如何加入鏈接表(鏈接到相同的SQL Server數據庫)?
- 2. 加入鏈接服務器表時提高查詢性能
- 3. MS ACCESS,VB將外部MS Access表導入SQL服務器表
- 4. 創建鏈接表在MS-Access數據庫的Web服務器
- 5. 鏈接服務器的陌生性 - 來自加入的性能
- 6. 如何加入MS Access中的功能?
- 7. MS Access超鏈接 - 根據不同的入口模式不同?
- 8. 鏈接服務器從SQL 2008 R2到MS Access
- 9. 在MS Access中附加鏈接表時的運行時錯誤
- 10. MS Access?:如何從另一個鏈接的表中將信息拉入表中
- 11. 在MySQL服務器中鏈接MS SQL服務器表
- 12. 鏈接ms訪問sql服務器
- 13. 如何在沒有MS Access的情況下重新鏈接服務器上的鏈接表?
- 14. 鏈接的服務器查詢性能
- 15. MS-Access添加其他鏈接表
- 16. 從SQL服務器中的鏈接服務器表插入到本地表中
- 17. 如何從鏈接的服務器視圖插入多個表?
- 18. 加入鏈接服務器或加入主機服務器?
- 19. 從MS-Access連接到SQL服務器而不創建DSN
- 20. 如何在Sql Server鏈接服務器中指定MS Access工作組文件?
- 21. 如何在保持表關係完整性的同時從MS Access數據輸入表中添加數據
- 22. 當鏈接到MS Access時,在MS Excel中缺少Guids鏈接
- 23. Sql服務器到Ms Access
- 24. 執行MS SQL服務器從Access 2003
- 25. 最大()MS Access和SQL服務器之間的行爲不同
- 26. 插入從SQL服務器MS Access中使用
- 27. 保存從MS Access 2007到MS SQL服務器的ODBC連接的密碼
- 28. 誰鏈接到我的MS Access表?
- 29. MS-Access鏈接表的併發錯誤
- 30. 連接到MS SQL服務器2014從不同的網絡
在本地表和鏈接表之間的許多場合完成了這個操作後,這幾乎就是它的功能。 – YogoZuno 2009-06-26 04:13:01