【问题标题】:Prefix query on VARBINARY leveraging index利用索引对 VARBINARY 进行前缀查询
【发布时间】:2015-12-14 11:04:09
【问题描述】:

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

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

我使用的是 SQL Server 2014。

【问题讨论】:

    标签: sql sql-server indexing


    【解决方案1】:

    一种方法可能是使用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 &lt;= left(val, 19) + char(65536-1)?不确定这是否涵盖所有边缘情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多