1
對EAV數據進行搜索的最佳方法是什麼?鑑於存儲在此表中的十幾個字段,我需要能夠搜索它們的任意組合:「Jones」的姓氏和「Springfield」的城市以及「1」的狀態。有一個搜索表單可以填寫任何字段。使用實體屬性值數據進行搜索
顯然最終版本會有點更有活力,但這裏是我到目前爲止有:
SELECT DISTINCT Utility.ClientSearch.ClientId AS ClientId,
cs1.FieldValue AS FirstName,
cs2.FieldValue AS City
FROM Utility.ClientSearch
LEFT OUTER JOIN Utility.ClientSearch AS cs1
ON cs1.ClientId = Utility.ClientSearch.ClientId
AND cs1.FieldName = 'LastName'
LEFT OUTER JOIN Utility.ClientSearch AS cs2
ON cs2.ClientId = Utility.ClientSearch.ClientId
AND cs2.FieldName = 'City'
WHERE (cs1.FieldValue = 'Jones')
AND (cs2.FieldValue = 'Springfield')
似乎對快將近一百萬條記錄,但我想知道,如果這是最有效的方法,或者如果有更好的方法。
我意識到EAV不是一個好主意,但它不是我的應用程序。我只是圍繞別人的應用程序寫一個查詢包裝器。我無法控制應用程序或數據結構。