我应该添加多个二级索引进行搜索吗

用户名

我的应用程序上有一个搜索屏幕,用户可以在其中使用多达4个参数进行搜索。我已经编写了一个存储过程以方便搜索。

Select 
    ID,
    FirstName,
    LastName,
    CountryCd,
    State,
    Zip,
    Data1,
    Data2,
    Data3
From 
    Customer
Where 
    ((FirstName like @paramfname) OR (@paramfname IS NULL) )
    AND ((LastName like @paramlname) OR (@paramlname IS NULL))
    AND CountryCd = @paramcountry
    AND ((Zip = @paramzip) OR  (@paramzip IS NULL))

我添加了一个包含所有4列FirstName,LastName,CountryCd和的二级索引Zip

CREATE NONCLUSTERED INDEX [idx_Cust_FN_Ctry] 
ON [dbo].[Customer]([FirstName] ASC, [LastName] ASC, [CountryCd] ASC, [Zip] ASC)

我的问题:这个索引足以进行有效搜索吗?如果用户运行搜索,仅使用FirstNameCountry,SQL Server是否知道如何有效使用索引?

还是我需要在这些字段中的每个字段上添加4个单独的二级索引?

谢谢

托马斯皇帝

对于此查询,我将CountryCd用来引导索引,因为这是保证可以搜索的唯一列。当然,这假定的CountryCd选择性对您的数据具有选择性。

如果您真的想花哨的话,可以添加一个包含SOUNDEXFirstName的SOUNDEX的计算列,并为其LastName编制索引。如果这样做,则可以这样表示过滤器

((FirstNameSound = SOUNDEX(@paramfname)) OR (@paramfname IS NULL) )
AND ((LastNameSound = SOUNDEX(@paramlname) OR (@paramlname IS NULL))
AND CountryCd = @paramcountry
AND ((Zip = @paramzip) OR  (@paramzip IS NULL))

这仅适用于英语发音的名称-在执行此操作之前,您应该了解SOUNDEX函数的含义。

关于1-4个索引的问题:这实际上取决于通常一起搜索的内容。如果有任何可能的组合,则可能需要全部四个索引(或者至少需要有选择的列上的索引)。如果通常一起搜索FirstName加号,LastName则应该在这两列上都有一个索引。

但是,让我挑战您的设计。看起来您似乎真的想用传统索引解决全文索引问题。我建议在完成设计之前先看一下SQL Server中的全文索引引擎。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以在cassandra的UDT字段上创建二级索引吗?

来自分类Dev

我可以在 KeyConditionExpression 中同时查询表和全局二级索引吗

来自分类Dev

mongo中有全球二级索引的概念吗?

来自分类Dev

Dynamo组成的本地二级索引

来自分类Dev

DynamoDB中的可选二级索引

来自分类Dev

AWS Lambda查询二级索引

来自分类Dev

Redis ZRANGEBYLEX匹配二级索引

来自分类Dev

DynamoDB中的可选二级索引

来自分类Dev

如何跟踪二级索引ID

来自分类Dev

通过二级索引从DynamoDB删除

来自分类Dev

我不想在 Elasticsearch 中索引 DynamoDB 二级索引

来自分类Dev

重复搜索并在另一列上进行二级检查

来自分类Dev

熊猫:按整数进行的多索引二级切片

来自分类Dev

Aerospike:Java Client是否支持二级索引上的多个过滤器?

来自分类Dev

Cassandra:具有多个WHERE子句的查询的二级索引

来自分类Dev

如何跨多个分片查询 DynamoDB 全局二级索引?

来自分类Dev

将新的本地二级索引添加到现有DynamoDB表中

来自分类Dev

创建表后,是否可以向dynamodb添加全局二级索引?

来自分类Dev

熊猫数据框分组,根据分组中的位置添加二级索引(整数)

来自分类Dev

AWS DynamoDB Local使用awscli添加全局二级索引

来自分类Dev

向DynamoDB中的现有表添加全局二级索引很困难

来自分类Dev

如何知道Rails是否使用我手动创建的索引进行搜索?

来自分类Dev

我们如何使用boto3查询dynamodb的二级索引?

来自分类Dev

AWS DynamoDB v2:对于替代查询,我是否需要二级索引?

来自分类Dev

Rails 3 Postgres使用单个字段索引进行查询,但是不应该使用复合索引吗?

来自分类Dev

Cassandra的二级索引与DSE Solr索引

来自分类Dev

Dynamo DB:全局二级索引,稀疏索引

来自分类Dev

仅使用二级hashKey,不使用rangeKey的二级索引查询项目

来自分类Dev

我可以从内部类访问“第二级”吗?

Related 相关文章

  1. 1

    我可以在cassandra的UDT字段上创建二级索引吗?

  2. 2

    我可以在 KeyConditionExpression 中同时查询表和全局二级索引吗

  3. 3

    mongo中有全球二级索引的概念吗?

  4. 4

    Dynamo组成的本地二级索引

  5. 5

    DynamoDB中的可选二级索引

  6. 6

    AWS Lambda查询二级索引

  7. 7

    Redis ZRANGEBYLEX匹配二级索引

  8. 8

    DynamoDB中的可选二级索引

  9. 9

    如何跟踪二级索引ID

  10. 10

    通过二级索引从DynamoDB删除

  11. 11

    我不想在 Elasticsearch 中索引 DynamoDB 二级索引

  12. 12

    重复搜索并在另一列上进行二级检查

  13. 13

    熊猫:按整数进行的多索引二级切片

  14. 14

    Aerospike:Java Client是否支持二级索引上的多个过滤器?

  15. 15

    Cassandra:具有多个WHERE子句的查询的二级索引

  16. 16

    如何跨多个分片查询 DynamoDB 全局二级索引?

  17. 17

    将新的本地二级索引添加到现有DynamoDB表中

  18. 18

    创建表后,是否可以向dynamodb添加全局二级索引?

  19. 19

    熊猫数据框分组,根据分组中的位置添加二级索引(整数)

  20. 20

    AWS DynamoDB Local使用awscli添加全局二级索引

  21. 21

    向DynamoDB中的现有表添加全局二级索引很困难

  22. 22

    如何知道Rails是否使用我手动创建的索引进行搜索?

  23. 23

    我们如何使用boto3查询dynamodb的二级索引?

  24. 24

    AWS DynamoDB v2:对于替代查询,我是否需要二级索引?

  25. 25

    Rails 3 Postgres使用单个字段索引进行查询,但是不应该使用复合索引吗?

  26. 26

    Cassandra的二级索引与DSE Solr索引

  27. 27

    Dynamo DB:全局二级索引,稀疏索引

  28. 28

    仅使用二级hashKey,不使用rangeKey的二级索引查询项目

  29. 29

    我可以从内部类访问“第二级”吗?

热门标签

归档