我有一個100萬行的事務表。該表的字段名稱爲「代碼」以保留客戶的ID。大約有10,000個不同的客戶代碼。如何根據選定的一組值高效地從數據庫表中選擇行
我有一個GUI界面允許用戶從事務表中呈現報表。用戶可以選擇任意數量的客戶進行渲染。
我在使用操作員首先,它適用於少數客戶:
SELECT * FROM TRANS_TABLE WHERE CODE IN ('...', '...', '...')
我很快就遇到問題,如果我選擇幾千個客戶。使用IN運算符有限制。
另一種方法是創建一個只有一個CODE字段的臨時表,並使用INSERT語句將選定的客戶代碼注入臨時表。然後我可以使用
SELECT A.* FROM TRANS_TABLE A INNER JOIN TEMP B ON (A.CODE=B.CODE)
這適用於巨大的選擇不錯。但是,臨時表創建,INSERT注入和臨時表的刪除會導致性能開銷。
你知道更好的解決方案來處理這種情況的?
這是一個典型的問題。第一個問題是,用戶會選擇這麼多的客戶嗎?什麼是常規用例? – shahkalpesh 2010-04-24 05:27:14
常規用例是選擇1個客戶。但總有要求選擇任意客戶。我希望找到一個能夠滿足所有要求的銀彈解決方案,而不會做太多的事情......以適應每個需求。 – 2010-04-25 01:22:15