【发布时间】:2015-12-14 11:04:09
【问题描述】:
我在 VARBINARY(200) 列上有一个索引。如何进行利用该索引的前缀查询?
我尝试了WHERE LEFT(column, 20) = @value,但这并没有利用索引。
我使用的是 SQL Server 2014。
【问题讨论】:
标签: sql sql-server indexing
我在 VARBINARY(200) 列上有一个索引。如何进行利用该索引的前缀查询?
我尝试了WHERE LEFT(column, 20) = @value,但这并没有利用索引。
我使用的是 SQL Server 2014。
【问题讨论】:
标签: sql sql-server indexing
一种方法可能是使用between。像这样的:
where column >= left(val, 20) and column < left(val, 20) + ???
我不确定到底是什么???应该是。
也许更好的方法是使用计算列,但这假设您总是在寻找 20 个字节:
alter table t add column_20 as (cast(column as varbinary(20));
create index idx_t_column20 on t(column_20);
那么相等应该使用索引:
where column_20 = @value
【讨论】:
column <= left(val, 19) + char(65536-1)?不确定这是否涵盖所有边缘情况。