virtual column make sqlserver using function index

In sqlserver,  it is impossible that if we want to create an function index. Doesn`t means we can not ? 

Father said there always a way.  That is virtual column.

 

Here is an exmple:

 

Sample 1

create table  #checkdistribute  ([CELL_ID] [varchar](20) NOT NULL)

create table  #checkdistribute1  ([CELL_ID1] [varchar](2) NOT NULL)

 

INSERT #checkdistribute (CELL_ID)  select CELL_ID from T with(nolock)

create NONCLUSTERED INDEX IDX_checkdistribute_cellid on #checkdistribute (CELL_ID asc)

INSERT #checkdistribute1 (CELL_ID1) select SUBSTRING(CELL_ID,1,2) from #checkdistribute

 

Although we generated an index but it still can not be use,. Because , Yes, SUBSTRING

 

无标题aaa.jpg

 

Yes, Tables Scan.

 

Just wait. we also have a hope.

 

Sample 2

 

create table  #checkdistribute  ([CELL_ID] [varchar](20) NOT NULL,[CELL_ID_F] AS SUBSTRING(CELL_ID,1,2) )

create table  #checkdistribute1  ([CELL_ID1] [varchar](2) NOT NULL)

 

INSERT #checkdistribute (CELL_ID)  select CELL_ID from T with(nolock)

create NONCLUSTERED INDEX IDX_checkdistribute_cellid on #checkdistribute ([CELL_ID_F] asc)

INSERT #checkdistribute1 (CELL_ID1) select CELL_ID_F from #checkdistribute

 

Yes, [CELL_ID_F] AS SUBSTRING(CELL_ID,1,2),  that is virtual column. It can makes using index

 

无标题aa.jpg

 

It works

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值