我们有一个包含约6000万条记录的SQL Server数据库表。这些是特定实体的名称和地址的记录。该表包含以下列:
[Name] [nvarchar](425) NOT NULL,
[Street] [nvarchar](900) NULL,
[City] [nvarchar](900) NULL,
[State] [nvarchar](900) NULL,
[PostalCode] [nvarchar](100) NULL
我们必须实现的是能够在1秒内执行特定的select语句。
我们应该能够基于“ [名称]”是否包含一个或几个输入的单词(不是“完全匹配”,也不是“开头为”)选择记录,然后应用下一个优先级排序逻辑:
这是我们尝试过的:
问题始终是根据状态+城市优先记录
问题是在这种情况下,我们如何使用SQL Server或任何其他数据源(最好在Azure上可用)实现在1秒内执行选择的功能
答案 0 :(得分:1)
除了规范化if(doesSmoke){
yearsTotal = yearsTotal - 7.5
}
if hoursSleepAvg < 7 {
yearsTotal = yearsTotal - yearsTotal / 100.0
}
if hoursSleepAvg > 8 {
yearsTotal = yearsTotal - yearsTotal / 100.0
,City
和State
并适当调整这些字段的大小之外,我唯一想到的就是建立一个单词列表:
Zip
具有一个例程(也许是一项夜间工作),该例程通过解析Create Table tbl_Entity
(
[ID] [Int] Identity Not Null,
[Name] [nvarchar](425) NOT NULL,
[Street] [nvarchar](900) NULL,
[City] [nvarchar](900) NULL,
[State] [nvarchar](900) NULL,
[PostalCode] [nvarchar](100) NULL
)
Create Table tbl_Entity_Name_Elements
(
[ID] [Int] Identity Not Null,
[Entity_ID] [Int] Not Null, -- foreign key to tbl_Entity
[Name_Element] [nvarchar](100) Null
)
中的行来填充bl_Entity_Name_Elements
。在tbl_Entity
上索引tbl_Entity_Name_Elements
,您应该能够相当快地获得包含所有给定单词列表的Name_Element
值,并且应该可以SARG。这样就为您提供了所需的Entity_ID
个项目。这有道理吗?