【问题标题】:How is a varchar index stored?varchar 索引如何存储?
【发布时间】:2012-01-20 19:20:00
【问题描述】:

我试图了解索引 varchar 列的含义。如果列是 150 个字符长,索引是如何存储的?例如,我了解在索引 int 列时如何使用 btree,但 varchar 是多个字符,索引本质上是由 char[1],然后是 char[2] 等组成的复合索引吗?

为了简单起见,如果我有值 AAA、AAB、ABB、ABC 等,索引结构会是什么样子?

【问题讨论】:

标签: sql-server sql-server-2008 sql-server-2005 indexing


【解决方案1】:

您的varchar(150) 列值将按字母顺序排序(由您使用的排序规则定义),作为字符串(而不是字符数组)。所以基本上,最后,你有一个长长的排序字符串列表。

这个列表然后以平衡的 btree 方式排列。索引的每一级都指向另一级,索引条目的值定义了每个较低级别的索引页中包含的值范围。

通过这种安排,只需几次页面读取,SQL Server 就会到达索引的叶级并能够获取您的数据。所以真的,这些字符串被解释为原子字符串——而不是字符或任何东西的组合。

基本上,索引的结构看起来很像SQL Server Index Basics 中显示的结构 - 只是在索引页面中不是数值,而是字符串值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    相关资源
    最近更新 更多