小编uri*_*ium的帖子

在具有许多非常相似的起始值的 VARCHAR 列上建立索引是否会导致性能不佳

我们似乎在使用索引的查询上有非常不寻常的糟糕性能。例如表格看起来像

  • PK BIGINT
  • ID VARCHAR(50)
  • 第 1 列
  • Col2
  • 等等

所以我们需要在数据库中插入一行,然后在 ID 上查找。但是第三方拥有的 ID 和我们有 PK。我们需要拿回PK。但是这些 ID 中很大一部分具有非常相似的起始值。例如

  • "//45-423484834893457"
  • "//45-573459834589345"
  • "//45-345345345345345

我不确定 SQL Server 是如何遍历 BTree 的,如果它从最左边的位置开始对值进行哈希处理或进行字符串比较。

在查询这些值时,具有非常大范围的非常相似的值(至少前 4 个字符是相同的)是否会导致索引性能不佳?

更新:

抱歉,查找查询是

SELECT PK_Column FROM table WHERE ID = @ID
Run Code Online (Sandbox Code Playgroud)

标记要求:

SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.
SQL Server parse and compile time: 
   CPU time = …
Run Code Online (Sandbox Code Playgroud)

index sql-server-2005 sql-server-2008 sql-server sql-server-2008-r2

6
推荐指数
1
解决办法
3610
查看次数