实施Azure搜索。当前,我们有两个相互关联的表(关系数据库),我们希望将它们用作索引。
实现此目标的最佳方法是什么?
我使用第一个选项作为示例,但是对于3条记录-使用邮递员,我在 200到400毫秒之间得到结果。业务上限大约为20个结果。我担心的是,当我开始添加更多索引,然后在代码中执行它们之间的联接时可能无法执行。
例如,假设主表具有4或5个与之相关的表(PK-FK关系),我将不得不为每个表创建一个索引。那样行吗?这会导致性能问题吗?我应该尝试第二种还是第三种选择?
能否请您扩大答案。 谢谢
答案 0 :(得分:0)
我建议您查看Azure搜索的新复杂类型功能。对于1:N关系,可以将相关记录放在索引上的Collection(Edm.ComplexType)字段中。有关复杂类型的更多信息:https://docs.microsoft.com/en-us/azure/search/search-howto-complex-data-types
就索引器而言,我建议您在SQL中创建一个视图,该视图将当前行的相关记录提取到JSON格式的文本字段中。然后,您将数据源/索引器指向此视图,并将字段从JSON字段映射到索引中的复杂集合字段。
SQL实际上使定义视图变得非常容易。例如,对于Azure Search Hotels示例架构,它将是:
SELECT *, (SELECT *
FROM dbo.Rooms$
WHERE dbo.Rooms$.HotelID = dbo.Hotels$.HotelID FOR JSON AUTO) AS Rooms
FROM dbo.Hotels$
希望这会有所帮助。
迈克·卡特
Azure搜索产品团队