sqlserver如何建索引

目录

一、sqlserver like 模糊匹配会命中索引吗?

二、sqlserver索引的INCLUDE是什么意思?

三、索引命中规律


一、sqlserver like 模糊匹配会命中索引吗?

在SQL Server中,使用LIKE操作符进行模糊匹配时,在某些情况下是可以命中索引的,但在其他情况下可能不会。

当你使用LIKE操作符时,如果模式以通配符字符(如*或%)开头,则大多数情况下将无法使用索引。例如,如果你使用以下查询:

SELECT * FROM myTable WHERE myColumn LIKE '%abc';

那么这个查询很可能无法利用任何索引来优化查询。

然而,如果你的查询模式没有以通配符字符开头,并且你的表上有一个适当的索引,那么它可以使用索引来优化查询。例如,如果你使用以下查询:

SELECT * FROM myTable WHERE myColumn LIKE 'abc%';

那么如果myColumn列上有一个合适的索引,SQL Server就可以使用这个索引来查找匹配的行。

总体来说,如果你想要让SQL Server能够使用索引来优化LIKE查询,那么最好避免在查询模式的开头使用通配符字符,并确保适当的索引已经创建在需要查询的列上。

二、sqlserver索引的INCLUDE是什么意思?

在 SQL Server 中,INCLUDE 是一种索引选项,它允许将非键列添加到非聚集索引中。这些非键列不会作为索引排序的一部分,但是它们可以包含在查询的结果集中。

使用 INCLUDE 可以提高查询性能,因为它可以减少对基表的访问次数。例如,如果一个查询需要返回某些列的值,而这些列不在索引键中,那么在该索引上包含这些列可以避免需要额外的 I/O 操作来检索这些值。

另外,使用 INCLUDE 还可以减少索引的大小,从而提高索引的效率。这是因为包含在索引中的每个列都会增加索引的大小,而非键列可能会占用大量空间,从而使索引变得更大并影响查询性能。

 INCLUDE作用在select上面与索引命中无关。相当于生成了一张派生表,查询的时候可以从派生表直接查询数据,否则去取原表数据。INCLUDE列多加一些的瑕疵是占用空间和更新变慢

三、索引命中规律

建索引第一列比较关键,举例candiateId,tenantId。
where语句candidate+tenantId可以命中,


where语句candidateId可以命中,


where语句tenantId不命中

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张3蜂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值