我有一個遺留系統,允許用戶管理(MySQL)數據庫中稱爲「TRANSACTION」的一些實體,並映射到Java中的Transaction類。事務對象有大約30個字段,其中一些是DB中的列,其中一些是連接到另一個表,如CUSTOMER,PRODUCT,COMPANY和類似的東西。在數據庫中靈活搜索
用戶可以訪問「搜索」屏幕,在這裏可以使用TransactionId和一些額外的字段進行搜索,但他們需要更多的靈活性。基本上,他們希望能夠使用TRANSACTION或任何鏈接表中的任何字段進行搜索。
我不知道如何使搜索既靈活又快速。有什麼辦法嗎?我不認爲有一個索引每列組合是一個有效的解決方案,但全表掃描也是無效的......是否有任何合理的設計?我使用Criteria來構建查詢,但這不是問題。
另外,我認爲mysql沒有使用正確的索引,因爲當我使hibernate登錄sql命令時,幾乎總是可以通過強制索引來改善響應時間......我開始使用類似this trick適用於強制使用特定索引的標準,但我並不爲「if」鏈感到自豪。我越來越像
if(queryDto.getFirstName() != null){
//force index "IDX_TX_BY_FIRSTNAME"
}else if(queryDto.getProduct() != null){
//force index "IDX_TX_BY_PRODUCT"
}
,如果問題是「過於開放」,我認爲這是一個典型的問題,感覺太可怕了
很抱歉,但我不能找到一個好辦法