2011-01-13 77 views
0

我在mysql數據庫(600萬條記錄)中有一個大型表。如果我把表格鏈接起來,我可以打開它 - 就像訪問請求記錄所需的那樣。但是,如果我使用傳遞查詢,則在打開它之前訪問請求整個表。這在我的普通桌面(200,000)記錄上足夠慢,但是大桌面是不可能的。我想使用passthrough來使用sql語句,但我需要使其更快。有沒有辦法做到這一點?謝謝!訪問大型sql表的查詢傳遞

編輯: 這是查詢;你不能比這更簡單。 SELECT * FROM Traffic12

+0

請發佈您的傳遞查詢 – 2011-01-13 07:13:45

+2

傳遞查詢應該與您所描述的完全相反。根據我對MS-Access的經驗,一個p-t查詢會將查詢語句發送到執行該查詢語句的後端,而非p-t查詢有時會將整個表關閉或將關鍵集充滿到客戶端。 – Tim 2011-01-13 13:31:07

回答

3

您的查詢是要求ENTIRE表。 Access正在做你正在做的事情。使用傳遞查詢的唯一時間是希望在服務器上執行WHERE子句(篩選),或者在服務器上進行連接時,或者在利用服務器端功能(如一個UDF),或者當你想添加後臺服務器可以理解的「暗示」。

當不使用p-t查詢時,您注意到的明顯的性能優勢來自於Access一次僅獲取特定數量的行;但是當您使用pass-thru時,您正在從分頁算法中繞過此優化。

當過濾完成後,服務器端的傳遞查詢可以比帶寬比非p-t簡單得多,因此可以產生相對於非傳遞的較大性能增益。或者有時後端是一個巨大的4-CPU機器,具有大量的RAM,並且可以通過閃存中的大型索引進行轉換。你必須評估情況,看看考慮到所有因素後哪種方法更好。