我有一個表(ResponseData)與列RESPONSE_ID,RESPONSEDATA,KEY1,KEY2,KEY3,KEY4,VALUE1,VALUE2,VALUE3,VALUE4 用戶可以插入數據任何以下類別。更快的搜索查詢與動態哪裏列oracle db
- 1, 「我的回答一個」, 「姓名」,NULL,NULL,NULL, 「蘋果」,NULL,NULL,NULL
- 2, 「我的回答兩個」, 「姓名」,「年齡」,NULL,NULL, 「蘋果」, 「22」,NULL,NULL
在不同的頁面後來當Responsedata與NAME =用戶請求 「蘋果」,年齡= 「32」 應該返回記錄1,因爲它具有匹配的屬性名稱 如果name =「Apple」age =「22」的用戶請求應返回記錄1和2,因爲它與記錄1按名稱匹配,記錄2按名稱和年齡匹配。
我們如何在這種情況下形成搜索查詢。 我試圖通過utl_match.jaro_winkler_similarity如下 utl_match.jaro_winkler_similarity(上(VALUE1 | VALUE3 | VALUE4),(USERINPUTREQUEST)),通過獲取所有現有記錄中的最高匹配記錄,但它在給出更多的查詢時給出延遲響應在桌上的數字記錄。 讚賞您的輸入。
你可以將當前表分成兩個 - 包含前兩列的父表和包含鍵值對的子表?它可以簡化查詢(不需要猜測4對列中的哪一列保存數據)。 –