相关疑难解决方法(0)

超过1列的B树索引是什么样的?

所以我正在阅读索引及其实现,我偶然发现了这个简短解释b-tree索引的网站:

http://20bits.com/articles/interview-questions-database-indexes/

b-tree索引对于仅在单个列上的索引非常有意义,但是假设我创建了一个包含多列的索引,那么b-tree如何工作呢?b树中每个节点的价值是多少?

例如,如果我有这个表:

table customer:
id    number
name   varchar
phone_number   varchar
city   varchar
Run Code Online (Sandbox Code Playgroud)

我创建了一个索引:(id,name,city)

然后运行以下查询:

SELECT id, name 
  FROM customer
 WHERE city = 'My City';
Run Code Online (Sandbox Code Playgroud)

该查询如何利用多列索引,或者除非将索引创建为(city,id,name)或(city,name,id),否则它不会使用它?

database sql-server oracle indexing

28
推荐指数
4
解决办法
1万
查看次数

SQL Server通过聚合选择随机(或第一)值

我怎样才能让SQL Server返回第一个值(任何一个,我不在乎,它只需要快速)聚合时会遇到什么?

例如,假设我有:

ID      Group
1       A
2       A
3       A
4       B
5       B
Run Code Online (Sandbox Code Playgroud)

我需要为每个组获取任何一个ID.我可以这样做:

Select 
max(id)
,group 
from Table 
group by group
Run Code Online (Sandbox Code Playgroud)

返回

ID      Group
3       A
5       B
Run Code Online (Sandbox Code Playgroud)

这样做,但是当我要求SQL Server计算最高ID时,我真的需要做的就是选择它遇到的第一个ID,这似乎很愚蠢.

谢谢

PS - 字段被编入索引,所以它可能没有什么区别?

sql-server random aggregation sql-server-2008 sql-execution-plan

3
推荐指数
1
解决办法
1403
查看次数