我通過一組FDW表從鍵/值存儲中公開數據。這一切都工作正常,除了Postgres經常被迫掃描整個表,當我只需要一個小子集。在外部數據包裝中訪問WHERE子句條件
例如:
SELECT * FROM人WHERE爲person_id = 'WLW001';
除非我將LIMIT 1添加到最後,它將搜索所有人行。
在我的鍵/值存儲中,我只需要將「WLW001」作爲鍵的一部分直接找到正確的記錄。
換句話說,我需要找到WHERE子句的條件來優化我的查詢到鍵/值存儲。我瀏覽了許多FDW和文檔的示例,並且找不到描述使用RelOptInfo或scan_clauses列表或幫助程序函數來獲取此信息的任何內容。
此外,如果SELECT語句包含參數標記,則看起來我需要替換標記的值。我在哪裏可以找到價值?
您使用哪個鍵/值存儲數據包裝?一些數據包裝器可以在遠程服務器上處理WHERE條件以減少發送的行數。如果它是文件存儲的fdw,那麼它可能會檢索整個文件並完全掃描它;另一種方法是創建自己的存儲過程,通過'plperlu'用適合您需求的邏輯來檢索數據。 –
關鍵/值存儲是我們自己的,用於訪問千兆字節的數據。關鍵是多部分。所以如果我可以將WHERE條件插入密鑰中,我可以直接找到感興趣的記錄。 –
數據存儲的格式是什麼?您使用哪種外部數據包裝? –