2011-08-05 134 views
1

我們有一套客戶表,如客戶,客戶地址,客戶溝通,客戶職業(oracle 11g)。通過oracle DB進行搜索優化

前端將提供諸如'email-id','f-name','city','state'之類的細節以便在數據庫中進行搜索並返回匹配的客戶詳細信息。

所有表格都包含10多個coulmns,當找到匹配的emailid,f-name,city,state時,我們需要返回該客戶的詳細信息。

返回細節分佈在所有4個表格中,我們需要連接所有4個表格才能獲取詳細信息。 (例如:我們需要重新設置cust-id,appt num,城市,州,電話號碼,行業deatisl)

comm-metchod - 可以像電子郵件,電話,傳真和 comm-方法值 - 將包含有他們的價值

也客戶可以有多個地址(具有不同的地址ID)和專業!

此處發出的是數據大小,連接需要更多時間。我們正在考慮提出具體的觀點,但如果客戶可以使用多個地址,電子郵件地址和職業,那麼觀點的規模仍然會令人難以置信。

尋找解決搜索複雜性的建議。

表像 -

製表名:客戶
CUST_ID F-名稱 L-名稱 縣名 前綴 後綴 性別 blah1 blah2 blah3


製表名稱:CUST_ADDR Cust-id 卡斯特 - 地址-ID 街道 聘任NUM 市 州 國家 blah4 blah5 blah6


製表名:CUST_COMMUNICATION 卡斯特-ID 卡斯特 - 地址-ID COMM法 COMM-方法值 blah7 blah8


製表名:CUST_PROFESSION 卡斯特-ID 行業代碼 職業介紹 評論-TXT blah9 blah10


+0

顯示一些SELECT請 – Yahia

+0

顯示一些示例數據和所需的輸出查詢該數據 – Bohemian

+1

「所有表包含10多行」?我無法抗拒地說:「當你用完手指嗎?」。抱歉。我們可以假設失蹤的字是「百萬」。 –

回答

1

您需要規劃什麼查詢將被允許;那就是最低要求的字段以及支持它們的指標。

我無法想象在城市或州的搜索將提供有用的結果。你會有太多的比賽。

電子郵件ID將非常具有選擇性,因此如果他們提供電子郵件ID,則使用一個查詢。查詢將從少量匹配的customer_communication記錄驅動到父級客戶,然後再到其他子級記錄。

名字加上姓名將是可接受的選擇性,所以如果他們提供這些但不是email_id(將使用第一個查詢),則使用第二個查詢 名字加城市加州可能是可接受的,所以第三個詢問 Last-Name加上城市加狀態可能是可以接受的,所以第四個查詢爲

大多數索引可能會被緩存在內存中。每個查詢可能會涉及到少數幾個物理IO。如果你需要得到它低於那個,然後看看物化視圖或表集羣(即CUST_ID上的一個集羣,所有表作爲該集羣的一部分存儲)。

+0

謝謝Gary,其中一個搜索標準是email-id,f-name,l-name,city,state和profession-code。匹配客戶的返回參數是cust-id,pref-name,appt num,街道名稱,城市,email-id和職業代碼。 –