sql - 利用索引对 VARBINARY 进行前缀查询

标签 sql sql-server indexing

我在 VARBINARY(200) 列上有一个索引。如何进行利用该索引的前缀查询?

我尝试了WHERE LEFT(column, 20) = @value,但这并没有利用索引。

我使用的是 SQL Server 2014。

最佳答案

一种方法可能会使用 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

关于sql - 利用索引对 VARBINARY 进行前缀查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34265394/

相关文章:

MySQL in 子句字符串到数组

c# - 从两个 where 条件返回 SQL 值以在 C# 中显示

sql - 在 SSIS 表达式中,我们如何只存储 getdate() 中的日期

mysql - 如果 Alter 表中的单个索引是多列索引的一部分,则不会添加它

sql - 没有 GROUP BY

sql - 如何编写 Oracle 查询以查找可能重叠的起始日期的总长度

sql - LINQ to SQL 查询帮助 : Doing a distinct on two columns together?

c# - 显示 GridView 中的行数

c - 是否可以在 C 中为 uint64_t 指针添加下标?

objective-c - 如何在核心数据中表示外键关系 - XCode 中的数据模型