【发布时间】:2010-12-11 12:25:15
【问题描述】:
所以我正在阅读索引及其实现,我偶然发现了这个网站,其中简要说明了 b-tree 索引:
http://20bits.com/articles/interview-questions-database-indexes/
b-tree 索引对于仅在单个列上的索引非常有意义,但是假设我创建了一个包含多个列的索引,那么 b-tree 是如何工作的呢? b-tree 中每个节点的值是多少?
例如,如果我有这张桌子:
table customer:
id number
name varchar
phone_number varchar
city varchar
我创建了一个索引:(id, name, city)
然后运行以下查询:
SELECT id, name
FROM customer
WHERE city = 'My City';
这个查询如何利用多列索引,或者除非索引被创建为 (city, id, name) 或 (city, name, id),否则它不使用它?
【问题讨论】:
-
对于 MySQL,请参阅dba.stackexchange.com/a/223159/1876
标签: sql-server database oracle indexing